我正在执行以下查询
db.collection.explain().find({
"$and": [
{
$or: [
{
"document.attr1": {
"$regex": "^searchValue_1$",
"$options": "i"
}
},
{
"document.arrayElement": {
"$elemMatch": {
"docInsideArray": "^searchValue_1$"
}
}
}
]
}, {
"document.isActive": true
}
]
})
我的内部集合中的文档具有以下架构
{
document:{
"attr1":"my_Document_1",
"isActive":"Y",
"arrayElement":[
{
docInsideArray:"myDocumentValue"
},
{
docInsideArray:"myDocumentValue_1"
}
]
}
}
我有以下索引
db.collection.createIndex( { "document.arrayElement.docInsideArray": 1 } )
当我用explain()执行提到的find()时,它正在执行集合扫描而不是索引扫描。请建议上面提到的find()任何其他索引是否合适?