[英]pymongo sort and find_one issue
我正在嘗試使用鍵position
對名為user_score
的集合進行排序,並獲取結果的第一個文檔。 在這種情況下,集合user_score
不存在,我希望得到None
的結果,但我得到了 cursor 回來。
1.結果=
db.user_score.find({'score':'$lt':score}}).sort("position,pymongo.DESCENDING").limit(1)
現在我像下面這樣更改了我的查詢,但沒有得到預期的任何結果。
2.結果=
db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)])
我的第一個查詢有什么問題?
謝謝
在您的第一個查詢中,在排序 function 中,您傳遞一個參數("position,pymongo.DESCENDING")
,而您應該傳遞兩個 arguments ("position", pymongo.DESCENDING)
。
一定要注意你的引號。
這是查找時的默認 mongodb 行為。 每當你使用find
時,你都會得到一個結果列表(在本例中是一個可迭代游標)。 如果查詢沒有匹配項,只有findOne
- 或者它是 PyMongo 等效的find_one
將返回None
。
使用列表將 cursor 的值轉換為字典:
list(db.user_score.find({'score':'$lt':score}}).sort("position",pymongo.DESCENDING).limit(1))[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.