आप एग्रीगेशन फ्रेमवर्क रूट पर जा सकते हैं, जिसमें $unwind
ऑपरेटर। यह सूची डेटा फ़ील्ड के प्रत्येक तत्व के लिए एक नया रिकॉर्ड उत्पन्न करेगा जिस पर खोलना लागू किया गया है। यह मूल रूप से डेटा को समतल करता है।
डेटा को समतल करने के बाद आपको $lookup
ऑपरेटर को products
. पर "जुड़ना" करने के लिए products
. के लिए फ़ील्ड संग्रह। नेस्टेड फल स्कीमा के लिए प्रक्रिया को दोहराएं।
इसे बेहतर ढंग से समझने के लिए एक उदाहरण (अनपरीक्षित) देखते हैं
var Schema = require('../model/schema');
Schema.Shop.aggregate([
{ "$unwind": "$products" },
{
"$lookup": {
"from": "products",
"localField": "products",
"foreignField": "_id",
"as": "product"
}
},
{ "$unwind": "$product" },
{ "$unwind": "$product.fruits" },
{
"$lookup": {
"from": "fruits",
"localField": "product.fruits",
"foreignField": "_id",
"as": "fruits"
}
},
{
"$project": {
"nameShop": 1,
"nameProduct": "$product.nameProduct",
"nameFruit": "$fruits.nameFruit",
"price": "$fruits.price",
}
}
]).exec(function (err, result){
if (err) throw err;
console.log(result);
})
अस्वीकरण :ऊपर परीक्षण नहीं किया गया कोड है जो केवल कुछ अनुमान लगाकर एक मार्गदर्शक के रूप में कार्य करता है कि आप नवीनतम MongoDB और mongoose संस्करणों के साथ एक परीक्षण वातावरण में कोड चला रहे हैं जो $lookup
ऑपरेटर और कि आप मोंगो खोल में एक ही एकत्रीकरण क्वेरी कर सकते हैं।