$matchकोड का इस्तेमाल करें कोड>
आपकी पाइपलाइन में आने वाले दस्तावेज़ों को फ़िल्टर करने के लिए ऑपरेटर।
ऑर्डर आईडी की सूची प्राप्त करें ($मिलान
पाइपलाइन के साथ $in
) find()<का उपयोग करके /कोड>
कर्सर का map()
विधि:
var orderIds = db.delivery.find({"status": "DELIVERED"}).map(function(d){return d.order;});
db.orders.aggregate([
{ "$match": { "_id": { "$in": orderIds } } },
{ "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
])
MongoDB 3.2 के लिए, $lookup
का उपयोग करें कोड>
ऑपरेटर जो प्रसंस्करण के लिए "शामिल" संग्रह से दस्तावेज़ों में फ़िल्टर करने के लिए एक ही डेटाबेस में एक अनछुए संग्रह में बाएं बाहरी शामिल होता है।
निम्न उदाहरण दिखाता है कि आप आदेश
पर एकत्रीकरण कार्रवाई कैसे चला सकते हैं आदेश
. से दस्तावेजों में शामिल होने का संग्रह वितरण
. के दस्तावेज़ों के साथ आदेश
. क्षेत्र का उपयोग कर संग्रह वितरण
. से संग्रह:
db.orders.aggregate([
{
"$lookup": {
"from": "delivery",
"localField": "_id",
"foreignField": "order",
"as": "delivery_orders"
}
},
{ "$match": { "delivery_orders.status": "DELIVERED" } },
{ "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
])