MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB não pode canonizar a consulta:BadValue Muitas expressões de texto


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.