如何在 mongodb 中聚合子集合并应用 $count 不起作用
Posted
技术标签:
【中文标题】如何在 mongodb 中聚合子集合并应用 $count 不起作用【英文标题】:How to get aggregation of child collection in mongodb and apply $count is not working 【发布时间】:2018-07-22 17:01:47 【问题描述】:我想对每个信标的计数值求和。我正在使用聚合查询,但它返回计数为 0。如果查询有误,请告诉我。
样本数据
[
"_id" : ObjectId("5a8166392aa41ec66efc66bf"),
"userID" : "5a7c3410bdff0f0014181874",
"date" : ISODate("2018-02-08T11:04:54.000Z"),
"beacons" : [
"counts" : "2",
"UUID" : "red"
,
"counts" : "1",
"UUID" : "blue"
]
,
"_id" : ObjectId("5a8166392aa41ec66efc66c0"),
"userID" : "5a7c3410bdff0f0014181874",
"date" : ISODate("2018-02-08T11:04:54.000Z"),
"beacons" : [
"counts" : "2",
"UUID" : "red"
,
"counts" : "1",
"UUID" : "blue"
]
]
查询
/* Query */
db.getCollection('CountsDetail')
.aggregate([
"$unwind":"$beacons"
,
"$group":
"_id":"$beacons.UUID", "counts": "$sum":"$counts"
]);
回应
/* Response */
"_id" : "red",
"counts" : 0
"_id" : "blue",
"counts" : 0
响应总和返回 0,这很奇怪。请纠正我做错了什么。谢谢
【问题讨论】:
修复计数以具有数值。 $sum 包含总和字符串值并尝试db.getCollection('CountsDetail') .aggregate([ "$unwind":"$beacons" , "$group": "_id":"$beacons.UUID", "counts": "$sum":"$beacons.counts" ])
。
【参考方案1】:
很抱歉错过阅读您的 OP。您的 counts
字段是嵌套的,因此请使用点符号:
"counts": "$sum":"$beacons.counts"
【讨论】:
以上是关于如何在 mongodb 中聚合子集合并应用 $count 不起作用的主要内容,如果未能解决你的问题,请参考以下文章