Mongodb Mongo aggregate-迭代文档中的多个对象并仅返回key:value
考虑下一份文件:Mongodb Mongo aggregate-迭代文档中的多个对象并仅返回key:value,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,考虑下一份文件: _id:ObjectId("6085c476e5989552b4bf18fb") employeeName: {needDisasseble: false, mark: false, value: "Bobi brown"}, employeeNumber: {needDisasseble: false, mark: false, value: "12556"}, employerName: {needDisasseb
_id:ObjectId("6085c476e5989552b4bf18fb")
employeeName: {needDisasseble: false, mark: false, value: "Bobi brown"},
employeeNumber: {needDisasseble: false, mark: false, value: "12556"},
employerName: {needDisasseble: false, mark: false, value: "Intel"},
child1Name: {needDisasseble: false, mark: false, value: "Jhon hopkins"},
child2Name: {needDisasseble: false, mark: false, value: "Donna dick"},
我正在努力实现两件事:
我知道如何在普通JS中实现这一点,但如何使用聚合管道实现同样的结果?如果它将来可能对任何人都有帮助:
db.element.aggregate([
{"$project":{_id:0,"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}},
{ $match : { "arrayofkeyvalue.k" : /^child/ } },
{ $project :
{ _id :1,
"arrayofkeyvalue": {
"$arrayToObject": {
"$map": {
"input": "$arrayofkeyvalue",
"as": "el",
"in": {
"k": "$$el.k",
"v": {
$cond : {
if :{
$eq :["$$el.v.value",undefined]
},
then: "$$el.v",
else: "$$el.v.value"
}
}
}
}
}
}
}
},
{ "$replaceRoot": { "newRoot": "$arrayofkeyvalue" } },
]
)