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.