Ci sono alcune opzioni che puoi usare con la ricerca di testo per soddisfare queste esigenze. Considera i seguenti documenti:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
L'"elenco" di parole predefinito è un o inclusione, ma se non vuoi un e inclusione si "citano" le parole:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Se vuoi escludere una parola poi prefisso -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
E se ne volessi parte come una frase esatta quindi "cita" l'intera frase:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Tuttavia, la derivazione delle parole ha un problema, quindi :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
In realtà non restituirebbe un risultato.
Consulta la documentazione su $text
operatore per esempi. Al momento non ci sono tutti, ma sta migliorando.