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

Hvordan kan jeg finde lignende dokumenter i MongoDB?

Først og fremmest skal dine data ombygges som nedenfor:

{ name: "Burger", ingredients: [ "bread", "cheese", "tomato", "beef" ] }

Det ekstra "element" tilføjer ikke yderligere oplysninger og hjælper heller ikke med at få adgang til dataene på nogen måde.

Dernæst skal du oprette et tekstindeks . Dokumenterne siger, at

Så vi laver simpelthen en

db.collection.ensureIndex({"ingredients":"text"})
 

Nu kan vi lave en $text søg :

db.collection.find(
  { $text: { $search: "bread beef" } },
  { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
 

som skulle give dig de mest relevante dokumenter.

Men hvad du også kunne gøre er en ikke-tekstsøgning efter direkte match:

db.collection.find({ingredients:"beef"})
 

eller for flere ingredienser

db.collections.find({ ingredients: { $all: ["beef","bread"] } })
 

Så for at søge efter brugerinput kan du bruge tekstsøgningen, og for at søge efter udvalgte ingredienser kan du bruge ikke-tekstsøgning.



  1. Hvordan gemmer man sessioner i MongoDB fra NodeJS?

  2. MongoClient arbejder ikke med php

  3. Er der nogen måde at implementere paginering i foråret webflux og fjederdata reaktive

  4. Hvilken kortlægningstype skal man vælge til associative arrays? Doktrin ODM