sql >> Database teknologi >  >> NoSQL >> MongoDB

Tæl resultater med MongoDB 3.0 Java Driver

Brug MongoCollections count() metode, ved at anvende et forespørgselsfilter, der gør brug af Datetime-objektet fra Joda-Time bibliotek, der forenkler datomanipulation i java. Du kan tjekke det ud her . Opret grundlæggende et datetime-objekt 15 minutter fra det nuværende tidspunkt:

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

Brug derefter variablerne til at konstruere en datointervalforespørgsel til brug 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å en splittet klynge er den underliggende db.collection.count() metode kan resultere i en unøjagtig optælling, hvis der eksisterer forældreløse dokumenter, eller hvis en chunk-migrering er i gang. Så det er mere sikkert at bruge aggregate() metode i stedet:

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 + nodejs:hvordan forespørger man ISODate-felter?

  2. Hvordan kan jeg gennemse/se de værdier, der er gemt i Redis

  3. skubbe objekt ind i array-skema i Mongoose

  4. MongoDB $slice