sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB No se puede canonizar la consulta:BadValue Demasiadas expresiones de texto

El error es bastante exacto. Lo que intenta hacer es crear "consultas de texto múltiples" dentro de un $or condición. MongoDB no puede hacer eso y, de hecho, se indica en la primera línea de Restricciones en la página del manual para $text .

Además, no se supone para hacer eso, sino especificar uno índice de texto en su colección para buscar en varios campos si es necesario:

db.collection.ensureIndex({ "comments": "text", "title": "text" })

Y luego probablemente desee asignar pesos como se muestra aquí .

Pero parece que todo lo que realmente está pidiendo es buscar "términos múltiples". Entonces no usas un $or para esto, pero simplemente envíe la lista de términos separados por espacios:

db.collection.find({ "$text": { "$search": "something else" } })

Cualquier palabra en la lista delimitada por espacios se busca luego dentro del contexto de cualquier campo que esté dentro del índice de texto, y se devolverá cualquier documento que contenga "cualquiera" de esas palabras. Con los resultados ordenados por "peso" de más coincidencias de las palabras de esa lista.