Istnieje kilka opcji wyszukiwania tekstowego, które odpowiadają tym potrzebom. Rozważ następujące dokumenty:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
Domyślna „lista” słów to lub włączenie, ale jeśli nie chcesz i włączenie „cytujesz” słowa:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Jeśli chcesz wykluczyć słowo, a następnie prefiks -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
A jeśli chcesz część tego jako dokładną frazę następnie „cytujesz” całą frazę:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Jednak słowa kluczowe mają problem, więc :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
W rzeczywistości nie zwróciłby wyniku.
Zobacz dokumentację dotyczącą $text
operator dla przykładów. W tej chwili nie wszystkie są dostępne, ale jest coraz lepiej.