【发布时间】:2015-02-07 20:59:53
【问题描述】:
所以我有这个索引
db.contact.ensureIndex(
{
'first_name':1,
'last_name':1,
'company_name':1,
'title':1,
'email':1,
'phone_number':1,
'state':1,
'list_id':1
});
如果我使用 $or 运行此查询,则未使用索引
db.contact.find(
{
$or: [
{'first_name':/sales/i},
{'last_name':/sales/i},
{'company_name':/sales/i},
{'title':/sales/i},
{'email':/sales/i},
{'phone_number':/sales/i},
{'state':/sales/i}
]
}).explain();
输出:
{
"cursor" : "BasicCursor", //Btree Index not being used !?
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 0,
"nscanned" : 0,
"nscannedObjectsAllPlans" : 0,
"nscannedAllPlans" : 0,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"server" : "",
"filterSet" : false
}
【问题讨论】:
-
为每个项目创建索引似乎是解决方案:stackoverflow.com/a/6875645/2805783