如何在MongoDB中选择和统计嵌入式集合数组的不同值?

时间:2016-05-13 08:43:15

标签: mongodb

收藏A有:

[
    {
        name: 'peter',
        types: ['human', 'male', 'young']
    },
    {
        name: 'mice',
        types: ['male', 'young']
    },
    {
        name: 'hen',
        types: ['female', 'old']
    }
]

我知道如何获得所有不同类型的值,但是如何获得它的不。外观如何使用Mongo查询提取它?

如果您能以Doctrine QueryBuilder方式显示解决方案,那就太棒了。

由于

1 个答案:

答案 0 :(得分:1)

使用聚合框架,您可以使用以下查询提供所有数组元素的外观:

db.collection.aggregate([{
            $project : {
                _id : 0,
                types : 1
            }
        }, {
            $unwind : "$types"
        }, {
            $group : {
                _id : "$types",
                count : {
                    $sum : 1
                }
            }
        }

    ])
  

并输出:

{
    "_id" : "human",
    "count" : 1
}, {
    "_id" : "old",
    "count" : 1
}, {
    "_id" : "male",
    "count" : 2
}, {
    "_id" : "young",
    "count" : 2
}, {
    "_id" : "female",
    "count" : 1
}