अनविंड करने के लिए, $unwind का उपयोग करें। $unwind इनपुट दस्तावेज़ों से सरणी फ़ील्ड को डीस्ट्रक्चर करता है ताकि प्रत्येक तत्व के लिए एक दस्तावेज़ आउटपुट हो।
आइए दस्तावेज़ों के साथ एक संग्रह बनाएं:
> db.demo515.insertOne(
{
"details1": [
"4700100004"
],
"details2": [
"Not Given"
],
"Value1": [
"56",
"45",
"35"
],
"Value2": [
"35",
"45",
"56"
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e889e51987b6e0e9d18f590") }
find() मेथड की मदद से संग्रह के सभी दस्तावेज़ प्रदर्शित करें:
> db.demo515.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e889e51987b6e0e9d18f590"), "details1" : [ "4700100004" ], "details2" : [ "Not Given" ], "Value1" : [ "56", "45", "35" ], "Value2" : [ "35", "45", "56" ] }
दो सरणियों को अनविंड करने की क्वेरी:
> db.demo515.aggregate([
{ $unwind: { path: "$Value1", includeArrayIndex : "index1" } },
{ $unwind: { path: "$Value2", includeArrayIndex : "index2" } },
{ $project: {
_id : 1,
details1: 1,
details2: 1,
Value1: 1,
Value2: 1,
valid: { $eq: ["$index1", "$index2"] }
}},
{ $match: { valid: true } }
]);
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e889e51987b6e0e9d18f590"), "details1" : [ "4700100004" ], "details2" : [ "Not Given" ], "Value1" : "56", "Value2" : "35", "valid" : true }
{ "_id" : ObjectId("5e889e51987b6e0e9d18f590"), "details1" : [ "4700100004" ], "details2" : [ "Not Given" ], "Value1" : "45", "Value2" : "45", "valid" : true }
{ "_id" : ObjectId("5e889e51987b6e0e9d18f590"), "details1" : [ "4700100004" ], "details2" : [ "Not Given" ], "Value1" : "35", "Value2" : "56", "valid" : true }