sql >> Database >  >> NoSQL >> MongoDB

Hoe vind je gelijkenis in documentveld MongoDB?

Als u tekstovereenkomst moet berekenen op de about veld, is een manier om dit te bereiken het gebruik van text index .

Bijvoorbeeld (in de mongo shell), als u een tekstindex maakt op de about veld:

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

je zou een query kunnen uitvoeren zoals (voorbeeld genomen van 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'}})

Met uw voorbeelddocumenten zou de zoekopdracht iets moeten opleveren als:

{
  "_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
}

die zijn gesorteerd op afnemende overeenkomstscore. Houd er rekening mee dat, in tegenstelling tot uw voorbeeldresultaat, document foobar4 wordt niet geretourneerd omdat geen van de opgevraagde woorden aanwezig is in foobar4 .

Tekstindexen worden beschouwd als een speciaal type index in MongoDB en komen dus met een aantal specifieke regels voor het gebruik ervan. Voor meer details, zie:




  1. Wat kan er gedaan worden met de asynchrone achtergrondtaken van CKAN?

  2. Mongodb converteert meerdere objecten naar een array, op zijn plaats, permanent

  3. Begeleiden van de host, selderij van een virtualenv (Django-app)

  4. Mongodb wil niet starten