एक एकत्रीकरण पाइपलाइन चलाने पर विचार करें जो आपको पहले डेटा सूची को समतल करने की अनुमति देगा, $dateToString
ऑपरेटर, फिर अपना वांछित परिणाम प्राप्त करने के लिए फ़्लैट किए गए दस्तावेज़ों को फिर से समूहित करें।
उपरोक्त तीन अलग-अलग पाइपलाइनों में दिखाया जा सकता है:
db.users.aggregate([
{ "$match": { "username": "xyz" } },
{ "$unwind": "$followers" },
{
"$project": {
"username": 1,
"count": "$followers.count",
"date": { "$dateToString": { "format": "%Y-%m-%d", "date": "$followers.ts" } }
}
},
{
"$group": {
"_id": "$_id",
"username": { "$first": "$username" },
"followers": { "$push": {
"count": "$count",
"date": "$date"
}}
}
}
])
MongoDB 3.4 और नए के साथ, आप नए $addFields
$map
के साथ पाइपलाइन चरण एक साथ
खोलने और समूह बनाने की आवश्यकता के बिना सरणी फ़ील्ड बनाने के लिए:
db.users.aggregate([
{ "$match": { "username": "xyz" } },
{
"$addFields": {
"followers": {
"$map": {
"input": "$followers",
"as": "follower",
"in": {
"count": "$$follower.count",
"date": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$$follower.ts"
}
}
}
}
}
}
}
])