Es gibt einige Optionen, die Sie mit der Textsuche verwenden können, um diesen Anforderungen gerecht zu werden. Betrachten Sie die folgenden Dokumente:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
Die standardmäßige "Wortliste" ist ein oder Einbeziehung, aber wenn Sie möchten, ein und Aufnahme "zitieren" Sie die Worte:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Wenn Sie ausschließen möchten ein Wort, dann stellen Sie -
voran :
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
Und wenn Sie einen Teil davon als genauen Ausdruck wollten dann "zitieren" Sie den ganzen Satz:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Das Stemmen von Wörtern hat jedoch ein Problem, also :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
Würde eigentlich kein Ergebnis zurückgeben.
Siehe die Dokumentation zu $text
Operator für Beispiele. Momentan sind noch nicht alle da, aber es wird besser.