我需要根据字段A对Mongodb数据进行$ group,并且结果应包含字段B的数组计数。例如,如果数据如下所示:
{A: 1, B: [1, 2, 3]} {A: 1, B: [4, 2]} {A: 2, B: [1]} {A: 2, B: [2, 3]} {A: 2, B: [1, 2, 3]}
结果应如下所示:
{A: 1, countB: 5} {A: 2, countB: 6}
我有一个$ unwind的解决方案,例如:
[ { $unwind: "$B" }, { $group: { "_id": "$A", "countB": {$sum: 1} }, { $project: { "_id": 0, "A": "$_id.A", "countB": "$countB" } } ]
我的问题是,如果没有$ unwind阶段,是否可以做到?
谢谢。
您可以使用$ size运算符获取各个数组的长度。
{ $group: { _id: "$A", countB: { $sum: { $size: "$B" } } } }