Има няколко опции, които можете да използвате с текстово търсене, за да отговарят на тези нужди. Разгледайте следните документи:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
„Списъкът“ с думи по подразбиране е или включване, но ако не желаете ни включване вие "цитирате" думите:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Ако искате даизключите дума, след което поставяте префикс с -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
И ако искате част от това като точна фраза след това "цитирате" цялата фраза:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Основните думи обаче имат проблем, така че :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
Всъщност няма да върне резултат.
Вижте документацията на $text
оператор за примери. Не всички са там в момента, но става все по-добре.