编辑:在第一条评论中找到解决方案,您也可以查看that question,我们也会做同样的事情。
假设我有一个包含那些文件的集合
{name: 'John', fruit:'apples'},
{name:'Zac', fruit:'bananas'},
{name:'Sara', fruit:'oranges'},
{name:'John', fruit:'oranges' },
{name:'Sara', fruit:'pear'}
有没有办法使用mongoDB按字段名称对这些文档进行分组而不指定它们的值?我希望所有文档都根据其名称进行分组,而不是指定“John”或“Sara”。
我想要实现的是按名称对它们进行分组,因此伪代码将类似于:
db.collection.groupByField('name')
,所需的结果是:
[
[
{name: 'John', fruit:'apples'},
{name:'John', fruit:'oranges' }
],
[
{name:'Zac', fruit:'bananas'}
],
[
{name:'Sara', fruit:'oranges'},
{name:'Sara', fruit:'pear'}
]
]
答案 0 :(得分:2)
Veeram在评论中回答了我的问题,解决方案是:
db.collection.aggregate([{$group:{_id:"$name", data:{$push:"$$ROOT"}}}])