sql >> Databáze >  >> NoSQL >> MongoDB

Počítejte výsledky s MongoDB 3.0 Java Driver

Použijte count() MongoCollection pomocí filtru dotazů, který využívá objekt Datetime z Joda-Time knihovna, která zjednodušuje manipulaci s datem v jazyce Java. Můžete si to ověřit zde . V podstatě vytvořte objekt datetime 15 minut od aktuálního času:

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

Poté pomocí proměnných vytvořte dotaz na časové období pro použití v metodě 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);

Na sdíleném clusteru základní db.collection.count() metoda může mít za následek nepřesný počet, pokud existují osamocené dokumenty nebo pokud probíhá migrace bloku. Je tedy bezpečnější použít aggregate() metoda místo toho:

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. Ve Flasku převeďte objekt POST z formuláře na reprezentaci vhodnou pro mongodb

  2. Přístup k redis lokálně na dockeru - docker compose

  3. Pracovat se dvěma samostatnými instancemi redis s sidekiq?

  4. Podporuje Spring Data Redis (1.3.2.RELEASE) JedisSentinelPool of jedis?