簡體   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