在 mongodb 中计数不同而不给出不同的结果
Posted
技术标签:
【中文标题】在 mongodb 中计数不同而不给出不同的结果【英文标题】:Count distinct in mongodb not giving distinct results 【发布时间】:2019-04-23 23:34:57 【问题描述】:一个正经的 sql 人正在为 no-sql 苦苦挣扎:
我正在 mongodb 中为类似的查询寻找替代方法
select city, count(distinct device) from collection group by city, devicetype
我的收藏是这样的
"city":"city1",
"device": "device1"
"deviceType":1
,
"city":"city1",
"device": "device2"
"deviceType":0
,
"city":"city1",
"device": "device3"
"deviceType":1
,
"city":"city1",
"device": "device2"
"deviceType":0
分组后,我需要每个城市的devicetype
使用的不同设备
意思是,输出会是这样的
"city":"city1",
"deviceType":0,
"deviceCount":1 //device2
,
"city":"city1",
"deviceType":1,
"deviceCount":2 //device1, device3
我试过了
"$group":
_id: "city": "$city", "devicetype": "$devicetype" ,
"devicetype": "$first": "$devicetype" ,
"count": "$sum": 1
我得到的是设备的总数,而不是不同的计数。
请推荐!!
【问题讨论】:
***.com/questions/24761266/… 阅读最后一个答案。 【参考方案1】:你可以使用下面的聚合
db.collection.aggregate([
"$group":
_id:
"city": "$city",
"deviceType": "$deviceType"
,
"deviceCount": "$addToSet": "$device" ,
"count": "$sum": 1
,
"$project":
"_id": 0,
"city": "$_id.city",
"deviceType": "$_id.deviceType",
"deviceCount": "$size": "$deviceCount"
])
Output
[
"city": "city1",
"deviceCount": 1,
"deviceType": 0
,
"city": "city1",
"deviceCount": 2,
"deviceType": 1
]
【讨论】:
以上是关于在 mongodb 中计数不同而不给出不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB(PyMongo)分页具有不同的不给出一致的结果