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"},
我正在努力实现两件事:

  • 迭代所有对象并返回objectKey:objectKey.value=>employeeName:“Bobi brown”
  • 我想放弃所有在其键名中不包含“child”的对象

  • 我知道如何在普通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" }  },
    
            ]
        )