在我的收藏,我已經說了以下結構嵌套文件MongoDB的索引不被使用
{
_id: ObjectId("ssxxdfasfsadf"),
a: {
b: "somevalue"
}
}
我創建了a.b
索引,如果我使用查找查詢作爲db.collection.find({"a.b": "someothervalue"})
工作正常。
如果我將查詢更改爲db.collection.find({a: {b: "somevalue"}})
,它將執行完整的集合掃描。 (來源 - find().explain()
)
當然,我可以修改我的應用程序做查詢作爲"a.b"
,但我想避免這種情況,因爲我已經在a
一些其他領域,在其上的未來我可能需要查詢。
反正有{a: {b: "somevalue"}}
可以調整索引嗎?
另外,使用其中一個還是其他的優點/缺點?
如果您計劃將文檔作爲一個整體進行匹配,則可以在整個嵌入式文檔上創建索引。嵌入式字段索引與嵌入式文檔索引不同。更多https://docs.mongodb.com/manual/core/index-single/#create-an-index-on-embedded-document。根據您的使用情況,您可以隨時在嵌入式文檔字段中創建索引/複合索引。 – Veeram