我在 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 没有使用我的索引?
繁星淼淼
相关分类