我在 mogno 4.2 中使用 python (pymongo)我的數據庫包含大約 1M 文檔,來自數據庫的示例:{ "_id" : ObjectId("5f41983da09c453f96cebf02"), "my_id" : "1", "data": { "status": "new" }}我創建了兩個索引,一個用于“my_id”,第二個用于“data.status”字段。在我的代碼中,我做了一個僅使用索引字段的簡單 find_one_and_update:document = collection.find_one_and_update( filter={ "$and": [ {"data.status": "new"}, {"_id": ObjectId("5f41983da09c453f96cebf02")}, ] }, update={ "$set": { "data": { "status": "in_progress", "last_update": datetime.datetime.utcnow(), "other_data": data } } } )在全規模生產環境下運行它會導致 COLLSCAN 而不是 IXSCAN。但是從 robo3t 手動運行它,操作是 IXSCAN。我的問題是,為什么 mogno 沒有使用我的索引?
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
所以顯然你錯過了這樣一個事實,即你的 python 代碼默認添加了一個sort?by?$neutral
,所以排序實際上得到了 winningPlan,因此忽略了索引。
添加回答
舉報
0/150
提交
取消