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

MongoDB group documents by field name without specifying value

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

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

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