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") }
सभी डॉक्यूमेंट्स
> 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" }
}
}
])
परिणाम
व्याख्या
- $project: नए फील्ड्स बनाता है - सप्ताह संख्या ($week), महीना संख्या ($month)
- $group: सप्ताह संख्या (_id: $DueDateWeek) के अनुसार ग्रुप करता है
- $avg: प्रत्येक सप्ताह के लिए औसत Rank गणना करता है
- $first: ग्रुप का पहला महीना मान लेता है
- सप्ताह 1 (जनवरी): औसत 15, महीना 1
- सप्ताह 4 (फरवरी): औसत 16, महीना 2
अन्य उपयोगी डेट ऑपरेटर्स
- $dayOfMonth: महीने का दिन (1-31)
- $dayOfWeek: सप्ताह का दिन (1-7, रविवार=1)
- $dayOfYear: वर्ष का दिन (1-366)
- $year: वर्ष