MongoDB按字段名称分组文档而不指定值

时间:2017-10-11 11:30:32

标签: mongodb mongoose nosql aggregation

编辑:在第一条评论中找到解决方案,您也可以查看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'}
  ]
]

1 个答案:

答案 0 :(得分:2)

Veeram在评论中回答了我的问题,解决方案是:

db.collection.aggregate([{$group:{_id:"$name", data:{$push:"$$ROOT"}}}])