ObjectIds की वांछित सूची प्राप्त करने के लिए निम्नलिखित एकत्रीकरण पाइपलाइन का उपयोग करें। यह $ifNull
का उपयोग करता है
एग्रीगेशन ऑपरेटर _id
जोड़ने के लिए फ़ील्ड अगर सरणी general_products
फ़ील्ड मौजूद नहीं है:
db.products.aggregate([
{
"$match": {"warehouse_sku": /^1/ }
},
{
"$group": {
"_id": {
"_id": "$_id",
"general_products": "$general_products"
},
"data": {
"$addToSet": "$_id"
}
}
},
{
"$project": {
"_id": 0,
"general_products": {
"$ifNull": ["$_id.general_products", "$data"]
}
}
},
{
"$unwind": "$general_products"
},
{
"$group": {
"_id": null,
"list_products": {
"$addToSet": "$general_products"
}
}
}
]);
यह आपको एक सरणी के साथ एक दस्तावेज़ देगा list_products
ऑब्जेक्ट आईडी के साथ:
/* 1 */
{
"result" : [
{
"_id" : null,
"list_products" : [
ObjectId("554b9f223d77c810e8915539"),
ObjectId("554b9f2e3d77c810e8915549"),
ObjectId("554b99b83d77c810e8915436"),
ObjectId("554b9f173d77c810e8915533"),
ObjectId("554b9f143d77c810e8915530"),
ObjectId("554b9f123d77c810e891552f")
]
}
],
"ok" : 1
}