在 mongodb 中投影集合类型数组的大小
Posted
技术标签:
【中文标题】在 mongodb 中投影集合类型数组的大小【英文标题】:Project the size of a set type array in mongodb 【发布时间】:2015-10-21 20:01:00 【问题描述】:我无法在投影和 groupby 中显示数组的大小。请找到我的以下查询。
[
"$unwind":"$a"
,
$group:
_id:"$a.acid",
"sessions":
$sum:1
,
"users":
$addToSet:"$cid"
,
$project:
"sessions":1,
"users":1
]
通过上述查询,我可以显示所有用户,但我只想显示用户集(数组)的大小。谁能帮我解决这个问题
【问题讨论】:
【参考方案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"
])
【讨论】:
@user1920 如果您对答案有任何疑问,您应该使用 cmets 而不是编辑答案。检查我的编辑。 感谢您的回答@Vishwas 当然@Vishwas 但其他人建议我不要添加 copmments。从下次开始,我将添加 cmets。非常感谢 @user1920 您应该修改您的问题或在答案中添加 cmets。以上是关于在 mongodb 中投影集合类型数组的大小的主要内容,如果未能解决你的问题,请参考以下文章