MongoDB $text
Suchvorgänge unterstützen keine teilweise Übereinstimmung. MongoDB ermöglicht Textsuchabfragen für Zeichenfolgeninhalte mit Unterstützung für Groß- und Kleinschreibung, Trennzeichen, Stoppwörter und Wortstamm. Und die Begriffe in Ihrer Suchzeichenfolge sind standardmäßig ODER-verknüpft.
Nehmen Sie Ihre (sehr nützlichen :) Beispiele einzeln:
EINZELZEIT, TEILWEISE
// returns nothing because there is no world word with the value `Crai` in your
// text index and there is no whole word for which `Crai` is a recognised stem
db.submissions.find({"$text":{"$search":"\"Crai\""}})
MEHRERE BEDINGUNGEN, VOLLSTÄNDIG
// returns the document because it contains all of these words
// note in the text index Dr. Bob is not a single entry since "." is a delimiter
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
MEHRERE BEDINGUNGEN, EINE TEILWEISE
// returns the document because it contains the whole word "Craig" and it
// contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
MEHRERE BEDINGUNGEN, BEIDE TEILWEISE
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Denken Sie daran, dass die $search
Zeichenfolge ist ...
Wenn also mindestens ein Begriff in Ihrer $search
string passt, dann passt MongoDB zu diesem Dokument.
Um dieses Verhalten zu überprüfen, wenn Sie Ihr Dokument bearbeiten und Dr. Bob
an DrBob
dann geben die folgenden Abfragen no zurück Dokumente:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Diese geben jetzt keine Übereinstimmungen zurück, weil Dr
ist in Ihrem Textindex kein ganzes Wort mehr, da ihm nicht der .
folgt Trennzeichen.