sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur hittar man likheter i dokumentfältet MongoDB?

Om du behöver beräkna textlikhet på about ett sätt att uppnå detta är att använda textindex .

Till exempel (i mongo skal), om du skapar ett textindex på about fält:

db.collection.createIndex({about: 'text'})

du kan köra en fråga som (exempel taget från https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score ):

db.collection.find({$text: {$search: 'similarity in comparison'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})

Med dina exempeldokument bör frågan returnera något i stil med:

{
  "_id": "foobar1",
  "about": "similarity in comparison",
  "score": 1.5
}
{
  "_id": "foobar2",
  "about": "perfect similarity in comparison",
  "score": 1.3333333333333333
}
{
  "_id": "foobar3",
  "about": "partial similarity",
  "score": 0.75
}

som sorteras efter minskande likhetspoäng. Observera att till skillnad från ditt exempelresultat, dokument foobar4 returneras inte eftersom inget av de sökta orden finns i foobar4 .

Textindex anses vara en speciell typ av index i MongoDB, och kommer därför med några specifika regler för dess användning. För mer information, se:




  1. MongoDB:vad är skillnaden mellan $elemMatch och $och att hitta objekt i arrayen?

  2. nginx lua redis cookie inte inställning

  3. Vad är nytt i MongoDB 4.4

  4. Vad är det rekommenderade tillvägagångssättet för databaser med flera hyresgäster i MongoDB?