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