簡體   English   中英

PyMongo搜索和排序非重復值(KeyError:“權重”)

[英]PyMongo search and sorting non-repeating values (KeyError: 'weight')

我有這樣的數據:

_id:5a0f6c61d1154f2f9983ad74
name:"colla"
weight:"2"
status:"+"
time_exp:2017-11-18 00:37:31.946

_id:5a0f6c61d1154f2f9983ad74
name:"pepsi"
weight:"3"
status:"+"
time_exp:2017-11-18 00:37:31.946

_id:5a0f6c61d1154f2f9983ad74
name:"colla"
weight:"3"
status:"+"
time_exp:2017-11-18 00:37:31.946

從中我想找到所有帶有"name": "colla", 'status': '+'非重復元素,並等於隨機變量。

示例:從以上數據中獲取所有“權重”(2,3)並等於。 (some_random1 = 2,some_random2 = 3)

我如何嘗試: list(db.some_db.find({}, {"name": "cola","status":'+'})).sort(key=itemgetter('weight'), reverse=True) ,但出現此錯誤:

KeyError: 'weight'

謝謝你的幫助

您的查詢中有錯字。

documents = db.some_db.find({'name': 'colla', 'status': '+'})
documents.sort(key=lambda doc: doc.get('weight', None), reverse=True)

使用itemgetter ,你必須非常特定的所有文件有一個權重字段。 在這里使用lambda是一種非嚴格的重量排序方式。 可以將查詢結果限制為查找具有權重字段的文檔。

documents = db.some_db.find({
                'name': 'colla', 'status': '+', 'weight': {'$exists': True},
            })

最后,可以將查詢結果限制為查找權重為2或3的文檔。

documents = db.some_db.find({
                'name': 'colla', 'status': '+', 'weight': {'$in': [2, 3]},
            })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM