如何在MongoDB中按特定阵列插槽分组?

如何在MongoDB中按特定阵列插槽分组?,mongodb,Mongodb,我的文件结构如下: { "product": "x", "category": [ {"name": "y1", "id": "z1"}, {"name": "y2", "id": "z2"}] } 如何仅按数组的第一个值进行分组,例如“类别[0]”?我尝试了“category.0”和“category[0]”,返回的结果只是一个包含所有文档的组 谢谢如果您使用的是MongoDB 2.2,您可以使用$unwind操作符,例如: db.test.aggregate( {$pr

我的文件结构如下:

{ "product": "x",
  "category": [ {"name": "y1", "id": "z1"},
        {"name": "y2", "id": "z2"}]
}
如何仅按数组的第一个值进行分组,例如“类别[0]”?我尝试了“category.0”和“category[0]”,返回的结果只是一个包含所有文档的组


谢谢

如果您使用的是MongoDB 2.2,您可以使用$unwind操作符,例如:

db.test.aggregate( {$project : {product:1, category:1}}, {$unwind: "$category"},{$group: {_id: "$category.name", productsPerCategory: {$sum:1}}})

这里描述了聚合框架:

非常有效,谢谢!顺便说一下,对于pymongo用户,您需要将所有参数包装在一个数组中。