Gunakan count()
Mon MongoCollection metode, menerapkan filter kueri yang memanfaatkan objek Datetime dari Joda-Time library yang menyederhanakan manipulasi tanggal di java. Anda dapat memeriksanya di sini . Pada dasarnya buat objek datetime 15 menit dari waktu sekarang:
DateTime dt = new DateTime();
DateTime now = new DateTime();
DateTime subtracted = dt.minusMinutes(15);
Kemudian gunakan variabel untuk membuat kueri rentang tanggal untuk digunakan dalam metode 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);
Pada sharded cluster, db.collection.count()
underlying yang mendasarinya metode ini dapat menghasilkan penghitungan yang tidak akurat jika ada dokumen yatim piatu atau jika migrasi potongan sedang berlangsung. Jadi lebih aman menggunakan aggregate()
sebagai gantinya:
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;