我有一个mongodb集合,里面装满了这样的文件:
{
_id : xxxxxx
category : 1,
tech : [
{key:"size",value:5},
{key:"color",value:"red"}
{key:"weight",value:27.4}
]
}
我的问题是:如何在此集合中使用key =“size”聚合(平均,总和或其他)每个项目?
谢谢你的帮助
答案 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完整列表。