有关于嵌入 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树数据结构,但是在嵌入文档的情况下如何使用它呢?