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