Błąd jest dość dokładny. To, co próbujesz zrobić, to utworzyć „wiele zapytań tekstowych” w $or
stan. MongoDB nie może tego zrobić i faktycznie jest to określone w pierwszym wierszu Ograniczenia
na stronie podręcznika dla $text
.
Co więcej, nie jesteś przypuszczalny aby to zrobić, ale raczej określ jeden indeks tekstowy w swojej kolekcji, aby w razie potrzeby przeszukać wiele pól:
db.collection.ensureIndex({ "comments": "text", "title": "text" })
A potem prawdopodobnie chcesz przypisać wagi jak pokazano tutaj .
Ale wydaje się, że tak naprawdę prosisz o wyszukanie „wielu terminów”. Więc nie używasz $or
w tym celu, ale po prostu prześlij listę terminów oddzielonych spacjami:
db.collection.find({ "$text": { "$search": "something else" } })
Wszelkie słowa na liście rozdzielanej spacjami są następnie wyszukiwane w kontekście dowolnych pól znajdujących się w indeksie tekstowym, a każdy dokument zawierający „dowolne” z tych słów zostanie zwrócony. Z wynikami uporządkowanymi według „wagi” większej liczby dopasowań słów z tej listy.