我无法在投影和groupby中显示数组的大小。请找到我的以下查询。
[
{
"$unwind":"$a"
},
{
$group:{
_id:"$a.acid",
"sessions":{
$sum:1
},
"users":{
$addToSet:"$cid"
}
}
},
{
$project:{
"sessions":1,
"users":1
}
}
通过上面的查询我可以显示所有用户,但我只想显示用户集(数组)的大小。任何人都可以帮我这个
答案 0 :(得分:1)
您可以在mongo中使用$size,例如以下查询:
db.collection.aggregate[{
"$unwind": "$a"
}, {
$group: {
_id: "$a.acid",
"sessions": {
$sum: 1
},
"users": {
$addToSet: "$cid"
}
}
}, {
$project: {
"sessions": 1,
"users": 1,
"size": {
$size: "$users"
}
}
}
])
在OP评论之后编辑它会导致无效的操作员错误 -
您可以再次展开users
数组和count
个用户。但这涉及再次展开数组,因此不推荐,查询将类似于(未测试):
db.collection.aggregate([{
"$unwind": "$a"
}, {
$group: {
_id: "$a.acid",
"sessions": {
$sum: 1
},
"users": {
$addToSet: "$cid"
}
}
}, {
$unwind: "$users"
}, {
$group: {
_id: "$_id",
"count": {
$sum: 1
},
"sessions": {$push:"$sessions"},// u can use "sessions":{$first:"$sessions"} also.
"users": {
$push: "$users"
}
}
}])