Der er et par muligheder, som du kan bruge med tekstsøgning for at passe til disse behov. Overvej følgende dokumenter:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
Standard "liste" over ord er en eller inklusion, men hvis du ikke ønsker et og inklusion du "citerer" ordene:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Hvis du vil udelukke et ord, så præfikser du med -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
Og hvis du ville have en del af det som en præcis sætning så "citerer" du hele sætningen:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Det har dog et problem at stamme ord, så :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
Ville faktisk ikke returnere et resultat.
Se dokumentationen på $text
operatør for eksempler. Ikke alle er der i øjeblikket, men det bliver bedre.