MongoDB: $или полнотекстовый поиск и $in

проблема

Привет. У меня есть то, что мне кажется странной проблемой, и я в недоумении:

давайте:

tags   = [ ObjectId('a'), ObjectId('b') ]
search = { $search: 'abc' }

теперь следующий запрос работает нормально:

db.entries.find({ $or: [ {$text:search} ] })

и этот тоже:

db.entries.find({ $or: [ {tags:{$in:tags}} ] })

но объединить их:

db.entries.find({ $or: [ {$text:search}, {tags:{$in:tags}} ] })

и я получаю следующую ошибку:

Unable to execute query: error processing query: ns=db.entries
Tree:
  $or
    tags $in [ ObjectId('a'), ObjectId('b') ]
    TEXT : query=abc, language=, tag=NULL
Sort: {}
Proj: {}
 No query solutions

мета-данных

  • я использую версию MongoDB 2.6.4.
  • объединение любое из условий с простым {_id:"c"} выражение работает нормально.
  • у меня есть мои текстовые индексы, настроенные правильно.
  • порядок, в котором появляются условия $or-array не влияет на результат.

у меня вопрос

помочь? :(

1 ответов


выполнение запроса в немного другой среде привело к гораздо более четкой ошибке:

Runner error: BadValue error processing query: ns=webistor.entries limit=0 skip=0
Tree: $or
    tags $in [ ObjectId('a') ObjectId('b') ]
    TEXT : query=abc, language=, tag=NULL
  Sort: {}
  Proj: {}

planner returned error: Failed to produce a solution for TEXT under OR - other non-TEXT clauses under OR have to be indexed as well.

Примечание

другие НЕТЕКСТОВЫЕ предложения под или должны быть проиндексированы также

видимо, мне придется добавить индекс в tags.