MongoDB встроенная структура индекса документа - PullRequest
0 голосов
/ 26 февраля 2019

Есть вопрос об индексе для встраивания document

Например, у меня есть индекс

db.mycoll.ensureIndex({ "embedded": 1 })

и документы, подобные этому

{
    "_id" : ObjectId("5c75284a5e4c7756e0efb97b"),
    "embedded" : {
        "4" : NumberInt("4"),
        "key1" : NumberInt("1"),
        "key2" : NumberInt("2"),
        "key3" : {
            "key4" : NumberInt("3")
        }
    }
}

Я знаю, что если я выполню запрос с совпадением полей db.mycoll.find({ "embedded.key1": NumberInt("1")}), тогда мой индекс не будет использован (collscan в объяснении).Он будет использоваться только при точном совпадении с внедренным документом

db.mycoll.find({
    "embedded": {
        "4": NumberInt("4"),
        "key1": NumberInt("1"),
        "key2": NumberInt("2"),
        "key3": {
            "key4": NumberInt("3")
        }
    }
})

Другой пример: я могу позвонить

db.mycoll.find().sort({"embedded": 1})

И он использует индекс (из-за объяснять )

Так как это работает?В индексах MongoDB используется структура данных B-дерева, но как ее использовать в случае встроенных документов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...