Так что этот индексиндекс не используется
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
}
Создание индекса для каждого элемента, по-видимому, является решением в соответствии с: http://stackoverflow.com/a/6875645/2805783 – donquixote