Arrays Mongodb$group+;数组项计数
我需要根据字段A对Mongodb数据进行$group,结果应该包含字段B项的计数,即数组。例如,如果数据看起来像:Arrays Mongodb$group+;数组项计数,arrays,mongodb,group-by,Arrays,Mongodb,Group By,我需要根据字段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} 我有一个$REWIND解决方案,如: [ { $unwind: "$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}
我有一个$REWIND解决方案,如:
[
{
$unwind: "$B"
},
{
$group: {
"_id": "$A",
"countB": {$sum: 1}
},
{
$project: {
"_id": 0,
"A": "$_id.A",
"countB": "$countB"
}
}
]
我的问题是,如果没有$REWIND阶段,是否有可能做到
谢谢。您可以使用运算符获取各个阵列的长度
{
$group: {
_id: "$A",
countB: {
$sum: {
$size: "$B"
}
}
}
}
您可以使用运算符获取单个数组的长度
{
$group: {
_id: "$A",
countB: {
$sum: {
$size: "$B"
}
}
}
}
你试过聚合吗
db.collection.aggregate([{$project: {
"A": "$A",
count: {
$size: "$B"
}
}}])
你试过聚合吗
db.collection.aggregate([{$project: {
"A": "$A",
count: {
$size: "$B"
}
}}])
此查询产生一个错误:抱歉,只需将$group更改为$projectWhere is$group?@Čamo I已对其进行了编辑,因此您可以直接使用它而无需任何错误。此查询产生一个错误:抱歉,只需将$group更改为$projectWhere is$group?@Čamo I已对其进行了编辑,因此您可以直接使用它而无需任何错误。谢谢,就是这个。谢谢您。