【发布时间】:2018-03-23 01:34:28
【问题描述】:
编辑:在第一条评论中找到解决方案,您也可以查看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' }
]
];
【问题讨论】:
-
试试
db.collection.aggregate([{$group:{_id:"$name", data:{$push:"$$ROOT"}}}]) -
是的,我们都想要同样的东西。不过,我的问题是针对不熟悉聚合的经验不足的程序员。谢谢你们的帮助,伙计们。
标签: mongodb mongoose nosql aggregation