आप नीचे एकत्रीकरण का प्रयास कर सकते हैं
मूल रूप से आपको $filter
की जरूरत है
products
सरणी और जाँच करें $cond
अगर इसमें कोई तत्व नहीं है या []
. के बराबर है तो आपको $slice
करना होगा
products
. के पहले तत्व के साथ सरणी।
db.collection.aggregate([
{ "$addFields": {
"products": {
"$cond": [
{
"$eq": [
{ "$filter": {
"input": "$products",
"cond": { "$eq": ["$$this.product_id", 2] }
}},
[]
]
},
{ "$slice": ["$products", 1] },
{ "$filter": {
"input": "$products",
"cond": { "$eq": ["$$this.product_id", 2] }
}}
]
}
}}
])
या यहां तक कि $let
का उपयोग कर रहे हैं
एकत्रीकरण
db.collection.aggregate([
{ "$addFields": {
"products": {
"$let": {
"vars": {
"filt": {
"$filter": {
"input": "$products",
"cond": { "$eq": ["$$this.product_id", 2] }
}
}
},
"in": {
"$cond": [
{ "$eq": ["$$filt", []] },
{ "$slice": ["$products", 1] },
"$$filt"
]
}
}
}
}}
])