首页 > 解决方案 > 如何获取嵌套mongodb文档的键

问题描述

我有这样的数据,我需要这个 mongodb 集合中的所有键等property1,property2

{
    "_id": 0,
    "config": [{
            "property1":"a",
            "property2": "b",
            "property3": "c",
            "property4": "d"
        },
        {
            "property1": "a",
            "property2": "bb",
            "property3": "cc",
            "property4": "d",
            "ispropert5": true
        },
        {
            "property1": "a",
            "property2": "b",
            "property3": "c",
            "property4": "ddd",
            "ispropert5": false,
            "ispropert6": false
        }
    ],
    "entity": "123asdf",
    "url": "",
    "createdDate": 1
}

我试过

db.COLLECTION_NAME.find({},{config:1}).forEach(function(doc){Object.keys(doc).forEach(function(key){innerkeys[key]=1})}):

标签: pythonmongodb

解决方案


您可以使用$ objectToArray动态读取对象键,然后使用 $concatArrays 运行$ reduce合并结果:

db.collection.aggregate([
    {
        $project: {
            properties: {
                $reduce: {
                    input: "$config",
                    initialValue: [],
                    in: {
                        $concatArrays: [
                            "$$value",
                            {
                                $map: {
                                    input: {
                                        $objectToArray: "$$this"
                                    },
                                    in: "$$this.k"
                                }
                            }
                        ]
                    }
                }
            }
        }
    }
])

蒙古游乐场


推荐阅读