MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie man UND und NICHT in MongoDB $text sucht

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.