我在 mogno 4.2 中使用 python (pymongo)我的數(shù)據(jù)庫(kù)包含大約 1M 文檔,來(lái)自數(shù)據(jù)庫(kù)的示例:{ "_id" : ObjectId("5f41983da09c453f96cebf02"), "my_id" : "1", "data": { "status": "new" }}我創(chuàng)建了兩個(gè)索引,一個(gè)用于“my_id”,第二個(gè)用于“data.status”字段。在我的代碼中,我做了一個(gè)僅使用索引字段的簡(jiǎn)單 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 } } } )在全規(guī)模生產(chǎn)環(huán)境下運(yùn)行它會(huì)導(dǎo)致 COLLSCAN 而不是 IXSCAN。但是從 robo3t 手動(dòng)運(yùn)行它,操作是 IXSCAN。我的問(wèn)題是,為什么 mogno 沒(méi)有使用我的索引?
1 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
所以顯然你錯(cuò)過(guò)了這樣一個(gè)事實(shí),即你的 python 代碼默認(rèn)添加了一個(gè)sort?by?$neutral
,所以排序?qū)嶋H上得到了 winningPlan,因此忽略了索引。
添加回答
舉報(bào)
0/150
提交
取消