MongoDB聚合:$集合中键的和值

时间:2014-04-04 21:48:01

标签: mongodb aggregation-framework

我有一个mongodb集合,里面装满了这样的文件:

{
    _id : xxxxxx
    category : 1,
    tech : [
        {key:"size",value:5},
        {key:"color",value:"red"}
        {key:"weight",value:27.4}
    ]
}

我的问题是:如何在此集合中使用key =“size”聚合(平均,总和或其他)每个项目?

谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

当您拥有包含数组的文档时,可以使用$unwind运算符来访问数组元素。

db.tech.aggregate([
    { "$unwind": "$tech" },
    { "$match": { "tech.key": "size" } },
    { "$group": { 
        "_id": null,
        "totalSize": { "$sum": "$tech.value" }
    }}
])

所以一旦阵列出现了#34;没有伤口"然后,您可以$group_id字段下要用作密钥的任何内容进行处理,对于集合中的所有文档都使用null。可以应用group aggregation operators中的任何一个。

"去标准化"中的数组元素文件将通过"点符号"如上所示。

另请参阅手册中的aggregation operators完整列表。