在 MongoDB 中按日期分組?
您可以使用聚合框架在 MongoDB 中按日期進行分組。讓我們先建立一個包含部分文件的集合。用於建立包含文件的集合的查詢如下
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate()});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee4df6fd07954a4890695")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2019-01-31
15:20:09.234Z")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee51c6fd07954a4890696")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2017-04-21
16:12:13.240Z")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee5336fd07954a4890697")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2016-05-25
19:11:21.130Z")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee54b6fd07954a4890698")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2016-05-25
19:11:21.130Z")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee8de6fd07954a4890699")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate()});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6ee8e76fd07954a489069a")
}使用 find() 方法顯示來自集合中的所有文件。查詢如下
> db.groupByDateDemo.find().pretty();
輸出如下
{
"_id" : ObjectId("5c6ee4df6fd07954a4890695"),
"UserLoginDateTime" : ISODate("2019-02-21T17:50:23.076Z")
}
{
"_id" : ObjectId("5c6ee51c6fd07954a4890696"),
"UserLoginDateTime" : ISODate("2019-01-31T15:20:09.234Z")
}
{
"_id" : ObjectId("5c6ee5336fd07954a4890697"),
"UserLoginDateTime" : ISODate("2017-04-21T16:12:13.240Z")
}
{
"_id" : ObjectId("5c6ee54b6fd07954a4890698"),
"UserLoginDateTime" : ISODate("2016-05-25T19:11:21.130Z")
}
{
"_id" : ObjectId("5c6ee8de6fd07954a4890699"),
"UserLoginDateTime" : ISODate("2016-05-25T19:11:21.130Z")
}
{
"_id" : ObjectId("5c6ee8e76fd07954a489069a"),
"UserLoginDateTime" : ISODate("2019-02-21T18:07:35.208Z")
}以下是 MongoDB 中按日期分組的查詢
> 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} }
... ]);輸出如下
{ "NumberOfTimes" : 2, "date" : ISODate("2016-05-25T19:11:21.130Z") }
{ "NumberOfTimes" : 1, "date" : ISODate("2017-04-21T16:12:13.240Z") }
{ "NumberOfTimes" : 1, "date" : ISODate("2019-01-31T15:20:09.234Z") }
{ "NumberOfTimes" : 2, "date" : ISODate("2019-02-21T17:50:23.076Z") }
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP