O erro é bem exato. O que você está tentando fazer é criar "várias consultas de texto" dentro de um
$or
doença. O MongoDB não pode fazer isso e, de fato, é declarado na primeira linha de Restrições
na página de manual para $text
. Além disso, você não deveria para fazer isso, mas especifique um índice de texto em sua coleção para pesquisar em vários campos, se necessário:
db.collection.ensureIndex({ "comments": "text", "title": "text" })
E então você provavelmente quer atribuir pesos como mostrado aqui .
Mas parece que tudo o que você está realmente pedindo é pesquisar "vários termos". Então você não usa um
$or
para isso, mas basta enviar a lista de termos separados por espaços:db.collection.find({ "$text": { "$search": "something else" } })
Quaisquer palavras na lista delimitada por espaço são então pesquisadas dentro do contexto de quaisquer campos que estejam dentro do índice de texto, e qualquer documento que contenha "qualquer" dessas palavras será retornado. Com os resultados ordenados por "peso" de mais correspondências das palavras dessa lista.