[英]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.