2014-10-28 6 views
1

Я вижу, что мы можем ограничить число сканируемых в MongoDB поиска текста, используя метод, упомянутый в этом документе: http://docs.mongodb.org/manual/tutorial/limit-number-of-items-scanned-for-text-search/MongoDB Text Search

Позвольте мне писать здесь вкратце. У меня есть коллекция документов по инвентаризации:

{ _id: 1, dept: "tech", description: "lime green computer" } 
{ _id: 2, dept: "tech", description: "wireless red mouse" } 
{ _id: 3, dept: "kitchen", description: "green placemat" } 
{ _id: 4, dept: "kitchen", description: "red peeler" } 
{ _id: 5, dept: "food", description: "green apple" } 
{ _id: 6, dept: "food", description: "red potato" } 

Затем я создал индекс:

db.inventory.ensureIndex(
    { 
    dept: 1, 
    description: "text" 
    } 
) 

Я могу написать этот запрос, и она работает:

db.inventory.find({ dept: "kitchen", $text: { $search: "green" } }) 

Теперь, если я использую это подход, я могу искать в определенном отделе. Моя проблема в том, что я хочу эту функцию, но я также хочу, чтобы во всех отделах была свобода. Но этот запрос не работает: db.inventory.find({ $text: { $search: "green" } })

Я использую версию 2.6.5.

ответ

0

Созданный вами индекс является составным, так что это не способ запускать db.inventory.find({ $text: { $search: "green" } }).

Если вы хотите, чтобы работать как можно изменить индекс как

db.inventory.ensureIndex(
    { 
    description: "text", 
    dept: 1 
    } 
) 

Но будет больше сканирования по первому запросу.