繁体   English   中英

pymongo查询到平面列表?

[英]pymongo Query to flat list?

我有一个带有“传感器”的集合,每个传感器看起来像:

{
    "_id" : ObjectId("5c3bfc66b5594738c8016d12"),
    "parentDeviceID" : ObjectId("5c3b9aa0b559471f1088c5e1"),
    "sn" : 2,
}

我想获取属于特定parentDeviceID的序列号(“ sn”)的列表:

    sensorList = list(self._dbC.sensorsCol.find({'parentDeviceID':parentDeviceID}, {'sn': 1, '_id':0}))
    print(type(sensorList))
    print(sensorList)

但是我得到了字典列表:

[{'sn': 1}, {'sn': 2}, {'sn': 3}]

我只想得到:

[1,2,3]

这是通过服务器端聚合来实现的方法:

db.sensors.aggregate({"$group":{"_id":null,"sn":{"$push":"$sn"}}})

这样您将获得一个文档,如下所示:

{ "_id" : null, "sn" : [1, 2, 3] }

从中提取数组应该很简单。

_id:null$group表示它为集合中的所有文档构造一个单独的组。 $push聚合器构造该组中所有sn值的数组。 请注意,文档大小限制为16 MB,因此,如果您的传感器ID列表可能变得更大,则可能需要其他客户端解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM