所以我想知道是否要在文档上创建索引,它是否还会在嵌入字段上固有地创建索引?
因此,示例:
{
name: {
first: "Yukihiro",
last: "Matsumoto"
}
}
如果它是嵌入式文档索引,将使用以下内容执行搜索:
{
"name.first": "Yukihiro",
"name.last": "Matsumoto"
}
导致它使用索引进行搜索,还是要查找O(n)文档?
答案 0 :(得分:3)
是的,只要文档的大小不超过允许的索引大小-https://docs.mongodb.com/manual/core/index-single/#create-an-index-on-embedded-document
您可以检查特定查询是否在使用带有查询功能的索引。 "stage": "IXSCAN"
表示它已使用索引。
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"type" : 1
},
"indexName" : "type_1",
"isMultiKey" : false,
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 1,
"direction" : "forward",
"indexBounds" : {
"type" : [
"[\"teacher\", \"teacher\"]"
]
}
}
}