Имеется одна пустая коллекция testdoc
с указанным ниже индексом
`db.testdoc.createIndex({"ratings.score": 1});`
Затем вставьте один документ db.testdoc.insert({_id: 3, ratings: {score: 23}})
Для запроса db.testdoc.find({"ratings.score": 23}).explain()
и план выигрыша
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"ratings.score" : 1
},
"indexName" : "ratings.score_1",
"isMultiKey" : false,
"multiKeyPaths" : {
"ratings.score" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"ratings.score" : [
"[23.0, 23.0]"
]
isMultiKey
неверно.
Однако, после вставки этого документа db.testdoc.insert({_id: 1,item: "ABC",ratings: [ { score: 2, by: "mn" }, { score: 9, by: "anon" } ]})
План выигрыша по вышеуказанному запросу
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"ratings.score" : 1
},
"indexName" : "ratings.score_1",
"isMultiKey" : true,
"multiKeyPaths" : {
"ratings.score" : [
"ratings"
]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"ratings.score" : [
"[23.0, 23.0]"
]
}
. isMultiKey
теперь верно.
Почему индекс может быть изменен на isMultiKey при изменении структуры документа?
Версия MongoDB: 4.2.5