sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan en $text-sökning utföra en partiell matchning

MongoDB $text sökningar stöder inte partiell matchning. MongoDB tillåter textsökningar på stränginnehåll med stöd för skiftlägesokänslighet, avgränsare, stoppord och stemming. Och termerna i din söksträng är, som standard, ELLER-redigerade.

Ta dina (mycket användbara :) exempel ett efter ett:

ENDA TERM, DELVIS

// 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\""}})

FLERA VILLKOR, KOMPLETTA

// 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\""}})

FLERA VILLKOR, EN PARTIELL

// 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\""}})

FLERA VILLKOR, BÅDA DELVIS

// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})

Tänk på att $search sträng är ...

Så, om minst en term i din $search sträng matchar så matchar MongoDB det dokumentet.

För att verifiera detta beteende, om du redigerar ditt dokument genom att ändra Dr. Bob till DrBob då kommer följande frågor att returnera nej dokument:

db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})

Dessa returnerar nu inga matchningar eftersom Dr är inte längre ett helt ord i ditt textindex eftersom det inte följs av . avgränsare.



  1. Mongodb:`com.mongodb.MongoSocketReadException:För tidigt nådd slutet av strömmen` med morfia

  2. Mongoose går med i två samlingar och får refererade data i två egenskaper

  3. Iterera över Mongodb-markören från aggregatet

  4. Hur man uppdaterar Mongodb-fält med utelämnande flagga i Golang-struktur