Mongodb - 从对象数组中检索选择值

时间:2016-02-03 15:58:35

标签: arrays mongodb mongodb-query

我有一个包含对象的数组。

这些对象具有名称和颜色。有些物品也可以包含儿童! (一组其他对象)。

{        
    items : [
        {
            name: 'box'
            color: 'red' 
        },
        {
            name: 'circle'
            color: 'blue'
            children: [
                {
                    name: 'sphere'
                    color: 'orange' 
                },
                {
                    name: 'polygons'
                    color: 'green' 
                }
            ]
        },
        {
            name: 'triangle'
            color: 'pink' 
        }
    ]
}

我需要检索这些项目的所有名称并排除它们的颜色。

结果应为:

items : [
    {
        name: 'box'
    },
    {
        name: 'circle'
        children: [
            {
                name: 'sphere'
            },
            {
                name: 'polygons'
            }
        ]
    },
    {
        name: 'triangle'
    }
]

我已经广泛研究了聚合但似乎无法找到解决方案!

如何排除在对象数组中检索值?

1 个答案:

答案 0 :(得分:2)

无需聚合。

 db.coll.find({}, {'_id' : 0, 'items.name' : 1, 'items.children.name' : 1})

将提供以下输出

{
    "items" : [
        {
            "name" : "box"
        },
        {
            "name" : "circle",
            "children" : [
                {
                    "name" : "sphere"
                },
                {
                    "name" : "polygons"
                }
            ]
        },
        {
            "name" : "triangle"
        }
    ]
}