MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB Impossibile canonizzare la query:BadValue Troppe espressioni di testo

L'errore è abbastanza esatto. Quello che stai cercando di fare è creare "query di testo multiple" all'interno di un $or condizione. MongoDB non può farlo ed è infatti indicato nella prima riga di Restrizioni nella pagina del manuale per $text .

Inoltre, non sei supposto per farlo, ma piuttosto specificarne uno indice di testo sulla tua collezione per cercare su più campi se richiesto:

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

E poi probabilmente vorrai assegnare pesi come mostrato qui .

Ma sembra che tutto ciò che stai veramente chiedendo sia di cercare "termini multipli". Quindi non usi un $or per questo, ma basta inviare l'elenco dei termini separati da spazi:

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

Tutte le parole nell'elenco delimitato da spazi vengono quindi ricercate nel contesto di qualsiasi campo si trovi all'interno dell'indice di testo e verrà restituito qualsiasi documento che contenga "qualsiasi" di quelle parole. Con i risultati ordinati per "peso" di più corrispondenze delle parole in quella lista.