Gebruik de volgende aggregatiepijplijn om de gewenste lijst met ObjectIds op te halen. Dit gebruikt de $ifNull
aggregatie-operator om de _id
. toe te voegen veld als de array general_products
veld bestaat niet:
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"
}
}
}
]);
Dit geeft je een document met een array list_products
met ObjectIds:
/* 1 */
{
"result" : [
{
"_id" : null,
"list_products" : [
ObjectId("554b9f223d77c810e8915539"),
ObjectId("554b9f2e3d77c810e8915549"),
ObjectId("554b99b83d77c810e8915436"),
ObjectId("554b9f173d77c810e8915533"),
ObjectId("554b9f143d77c810e8915530"),
ObjectId("554b9f123d77c810e891552f")
]
}
],
"ok" : 1
}