在 mongodb 中投影集合类型数组的大小
Project the size of a set type array in mongodb
我无法在 projection 和 groupby 中显示数组的大小。请找到我的以下查询。
[
{
"$unwind":"$a"
},
{
$group:{
_id:"$a.acid",
"sessions":{
$sum:1
},
"users":{
$addToSet:"$cid"
}
}
},
{
$project:{
"sessions":1,
"users":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"
}
}
}])
我无法在 projection 和 groupby 中显示数组的大小。请找到我的以下查询。
[
{
"$unwind":"$a"
},
{
$group:{
_id:"$a.acid",
"sessions":{
$sum:1
},
"users":{
$addToSet:"$cid"
}
}
},
{
$project:{
"sessions":1,
"users":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"
}
}
}])