sql >> Databasteknik >  >> NoSQL >> MongoDB

Räkna resultat med MongoDB 3.0 Java Driver

Använd MongoCollections count() metod, applicering av ett frågefilter som använder Datetime-objektet från Joda-Time bibliotek som förenklar datummanipulation i java. Du kan kolla in det här . Skapa i princip ett datetime-objekt 15 minuter från aktuell tid:

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

Använd sedan variablerna för att konstruera en datumintervallfråga för användning i count()-metoden:

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);

På ett delat kluster, den underliggande db.collection.count() metoden kan resultera i en felaktig räkning om det finns övergivna dokument eller om en delmigrering pågår. Så det är säkrare att använda aggregate() metod istället:

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. Geospatialt stöd i MongoDB

  2. Varför använder inte MongoDB index-korsning?

  3. Fel jemalloc/jemalloc.h:Ingen sådan fil eller katalog när du gör Redis

  4. Hur man startar redis-server på en annan port än standardporten 6379 i ubuntu