एक्यूमुलेटर्स वे ऑपरेटर हैं जो पाइपलाइन के माध्यम से दस्तावेजों के प्रोग्रेस के रूप में अपनी स्थिति बनाए रखते हैं।
$ROOT रूट दस्तावेज़ को संदर्भित करता है, यानी वर्तमान में एग्रीगेशन पाइपलाइन चरण में संसाधित होने वाला टॉप-लेवल दस्तावेज़।
आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं:
> db.demo582.insertOne({FirstName:"Chris",Age:21,createDate:new ISODate("2020-01-10")}); { "acknowledged" : true, "insertedId" : ObjectId("5e91ce41fd2d90c177b5bcbd") }
> db.demo582.insertOne({FirstName:"Chris",Age:21,createDate:new ISODate("2020-04-21")}); { "acknowledged" : true, "insertedId" : ObjectId("5e91ce4ffd2d90c177b5bcbe") }
> db.demo582.insertOne({FirstName:"Chris",Age:22,createDate:new ISODate("2020-02-11")}); { "acknowledged" : true, "insertedId" : ObjectId("5e91ce59fd2d90c177b5bcbf") }
> db.demo582.insertOne({FirstName:"Chris",Age:22,createDate:new ISODate("2020-01-12")}); { "acknowledged" : true, "insertedId" : ObjectId("5e91ce6efd2d90c177b5bcc0") }
find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें:
> db.demo582.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e91ce41fd2d90c177b5bcbd"), "FirstName" : "Chris", "Age" : 21, "createDate" : ISODate("2020-01-10T00:00:00Z") }
{ "_id" : ObjectId("5e91ce4ffd2d90c177b5bcbe"), "FirstName" : "Chris", "Age" : 21, "createDate" : ISODate("2020-04-21T00:00:00Z") }
{ "_id" : ObjectId("5e91ce59fd2d90c177b5bcbf"), "FirstName" : "Chris", "Age" : 22, "createDate" : ISODate("2020-02-11T00:00:00Z") }
{ "_id" : ObjectId("5e91ce6efd2d90c177b5bcc0"), "FirstName" : "Chris", "Age" : 22, "createDate" : ISODate("2020-01-12T00:00:00Z") }
ग्रुप एक्यूमुलेटर ऑपरेटर लागू करने के लिए क्वेरी:
> db.demo582.aggregate([
{
"$group": {
"_id": "$FirstName",
"MaximumDate": { "$max": "$createDate" },
"count": { "$sum": 1 },
"details": { "$first": "$$ROOT" }
}
},
{
"$project": {
"MaximumDate": 1,
"count": 1,
"details": {
"_id": "$_id",
"FirstName": "$details.FirstName",
"Age": "$details.Age"
}
}
}
])
यह निम्न आउटपुट देगा:
{ "_id" : "Chris", "MaximumDate" : ISODate("2020-04-21T00:00:00Z"), "count" : 4, "details" : { "_id" : "Chris", "FirstName" : "Chris", "Age" : 21 } }