Dùng aggregation framework để nhóm theo ngày. Tạo collection groupByDateDemo:
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate()});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6ee4df6fd07954a4890695") }
... (thêm các ngày: 2019-01-31, 2017-04-21, 2016-05-25 x2, now) ...
Hiển thị:
> db.groupByDateDemo.find().pretty();
Truy vấn nhóm theo ngày (bỏ qua giờ/phút/giây), đếm số lần, sắp xếp, lấy top 10:
> db.groupByDateDemo.aggregate([ { $group: { _id: { $add: [ { $dayOfYear: "$UserLoginDateTime" }, { $multiply: [400, {$year: "$UserLoginDateTime"}] } ] }, NumberOfTimes: { $sum: 1 }, f: {$min: "$UserLoginDateTime"} } }, { $sort: {_id: 1} }, { $limit: 10 }, { $project: { date: "$f", NumberOfTimes: 1, _id: 0} } ]);
Kết quả: