Det finns några alternativ som du kan använda med textsökning för att passa dessa behov. Tänk på följande dokument:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
Standard "lista" med ord är ett eller inkludering, men om du inte vill ha ett och inkludering du "citerar" orden:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Om du vill utesluta ett ord sedan prefixar du med -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
Och om du ville ha en del av det som en exakt fras sedan "citerar" du hela frasen:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Det har dock ett problem att komma med ord, så :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
Skulle faktiskt inte returnera ett resultat.
Se dokumentationen på $text
operatör för exempel. Alla är inte där just nu, men det blir bättre.