【发布时间】:2016-11-22 04:09:49
【问题描述】:
假设我们有以下数据
* 父级 *
{ _id: 10, child: ObjectID(20) }
{ _id: 11, child: ObjectID(21) }
{ _id: 12, child: ObjectID(23) }
* 儿童 *
{ _id: 20, name: 'test-1' }
{ _id: 21, name: 'test-2' }
{ _id: 22, name: 'test-3' }
{ _id: 23, name: 'test-1' }
我想知道用什么猫鼬来获得以下结果。
{ _id: 'test-1', count: 2}
{ _id: 'test-2', count: 1}
我目前正在使用以下查询,但结果中的 _id 始终为 { _id: null, count: 3 }
:(
Parent.aggregate([{
$group: {
_id: '$child.name',
count: { $sum: 1 }
}
}])
感谢任何形式的帮助。
【问题讨论】:
-
这是两个不同的集合?
-
是的,它们是不同的集合@Yogesh
-
在这种情况下,您应该首先在父集合上编写两个不同的查询,获取所有子 id,并在子集合中使用子集合中的子 id,在聚合
$match中使用$in并按name分组,最后sum -
@Yogesh 您能否详细说明答案?