sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan finder man lighed i dokumentfeltet MongoDB?

Hvis du har brug for at beregne tekstlighed på about felt, er en måde at opnå dette på at bruge tekstindeks .

For eksempel (i mongo shell), hvis du opretter et tekstindeks på about felt:

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

du kan udføre en forespørgsel som (eksempel taget fra 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 dine eksempeldokumenter skulle forespørgslen returnere noget som:

{
  "_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 er sorteret efter faldende lighedsscore. Bemærk venligst, at i modsætning til dit eksempelresultat, dokument foobar4 returneres ikke, fordi ingen af ​​de forespurgte ord findes i foobar4 .

Tekstindekser betragtes som en særlig type indeks i MongoDB, og kommer derfor med nogle specifikke regler for dets brug. For flere detaljer, se venligst:




  1. mongodb:finde den højeste numeriske værdi af en kolonne

  2. MongoError:Forkerte argumenter

  3. Hvordan øger man ydeevnen af ​​opdateringsoperationen i Mongo?

  4. Spring Data Reactive Repositories med MongoDB