基於 MongoDB 中的日期範圍按天/月/周進行分組
要分組,請在 MongoDB 中使用 $week 和 $month。讓我們建立一個包含文件的集合 −
> db.demo133.insertOne({"Rank":18,"DueDate":new ISODate("2020-01-10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31980968e7f832db1a7f78")
}
> db.demo133.insertOne({"Rank":12,"DueDate":new ISODate("2020-01-10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31982568e7f832db1a7f79")
}
> db.demo133.insertOne({"Rank":12,"DueDate":new ISODate("2020-02-01")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31986568e7f832db1a7f7a")
}
> db.demo133.insertOne({"Rank":20,"DueDate":new ISODate("2020-02-01")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31986c68e7f832db1a7f7b")
}在 find() 方法的幫助下顯示集合中的所有文件 −
> db.demo133.find();
這將產生以下輸出 −
{ "_id" : ObjectId("5e31980968e7f832db1a7f78"), "Rank" : 18, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e31982568e7f832db1a7f79"), "Rank" : 12, "DueDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e31986568e7f832db1a7f7a"), "Rank" : 12, "DueDate" : ISODate("2020-02-01T00:00:00Z") }
{ "_id" : ObjectId("5e31986c68e7f832db1a7f7b"), "Rank" : 20, "DueDate" : ISODate("2020-02-01T00:00:00Z") }以下是基於日期範圍按天/月/周進行分組的查詢 −
> db.demo133.aggregate([
... {
... "$project": {
... "DueDateWeek": { "$week": "$DueDate" },
... "DueDateMonth": { "$month": "$DueDate" },
... "Rank": 1
... }
... },
... {
... "$group": {
... "_id": "$DueDateWeek",
... "AvgValue": { "$avg": "$Rank" },
... "MonthValue": { "$first": "$DueDateMonth" }
... }
... }
... ])這將產生以下輸出 −
{ "_id" : 4, "AvgValue" : 16, "MonthValue" : 2 }
{ "_id" : 1, "AvgValue" : 15, "MonthValue" : 1 }
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP