sql >> データベース >  >> NoSQL >> MongoDB

MongoDB3.0Javaドライバーで結果をカウントする

    MongoCollectionのcount()を使用します メソッド、 Joda-TimeのDatetimeオブジェクトを利用するクエリフィルターを適用します Javaでの日付操作を簡素化するライブラリ。 こちらで確認できます 。基本的に、現在の時刻から15分の日時オブジェクトを作成します:

    DateTime dt = new DateTime();
    DateTime now = new DateTime();
    DateTime subtracted = dt.minusMinutes(15);
    

    次に、変数を使用して、count()メソッドで使用する日付範囲クエリを作成します。

    Document query = new Document("lastlogin", new Document("$gte", subtracted).append("$lte", now));
    mongoClient = new MongoClient("localhost", 3001);
    long count = mongoClient.getDatabase("database1")
                            .getCollection("users")
                            .count(query);
    

    シャーディングされたクラスターでは、基になる db.collection.count() 孤立したドキュメントが存在する場合、またはチャンクの移行が進行中の場合、メソッドは不正確なカウントになる可能性があります。したがって、 aggregate()を使用する方が安全です。 代わりに方法:

    Iterator<Document> it = mongoClient.getDatabase("database1")
                           .getCollection("users")
                           .aggregate(Arrays.asList(
                                new Document("$match", new Document("lastlogin", 
                                    new Document("$gte", subtracted).append("$lte", now))
                                ),
                                new Document("$group", new Document("_id", null)
                                    .append("count", 
                                        new Document("$sum", 1)
                                    )
                                )
                            )
                        ).iterator();
    int count = it.hasNext() ? (Integer)it.next().get("count") : 0;
    



    1. 初心者のためのMongoDBを使用したPythonデータベースプログラミング

    2. redisでdb(key_space)を作成する方法

    3. MapReduceのHadoopリデューサークラスとは何ですか?

    4. 運用データベース管理