आपके पास कम से कम MongoDB v3.4.4 होना चाहिए
प्रोजेक्टिंग "array.a": 1
वापस आ जाएगा ["A", "A", "A"]
.चूंकि आपकी array
फ़ील्ड एक सरणी है, हमें $map
. का उपयोग करने की आवश्यकता है पुनरावृत्ति के लिए ऑपरेटर।
ऑब्जेक्ट कुंजियों पर पुनरावृति करने के लिए, हमें इसे $objectToArray के साथ सरणी में बदलने की आवश्यकता है ऑपरेटर।
"c": { "c": [
"x": true, {k: "x", v: true},
"y": true, -> {k: "y", v: true},
"z": false {k: "z", v: false},
} ]
फिर, हम $filter
. लागू करते हैं ऑपरेटर केवल k:v
. प्राप्त करने के लिए जोड़े जिनके v
क्या true
है ।
db.collection.aggregate([
{
$match: {}
},
{
$project: {
array: {
$map: {
input: "$array",
as: "arr",
in: {
a: "$$arr.a",
b: "$$arr.b",
c: {
$size: {
$filter: {
input: {
$objectToArray: {
$ifNull: [
"$$arr.c",
{}
]
}
},
cond: {
$eq: [
"$$this.v",
true
]
}
}
}
}
}
}
}
}
}
])