sql >> Databáze >  >> NoSQL >> MongoDB

Jak najdu podobné dokumenty v MongoDB?

Za prvé, vaše data by měla být přepracována, jak je uvedeno níže:

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

Dodatečná „položka“ nepřidává žádné další informace ani nijak nenapomáhá přístupu k datům.

Dále musíte vytvořit textový index . Dokumenty uvádí, že

Takže jednoduše uděláme a

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

Nyní můžeme provést $text hledat :

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

který by vám měl poskytnout nejrelevantnější dokumenty.

Co však můžete také udělat, je netextové vyhledávání přímých shod:

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

nebo pro více přísad

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

Takže pro vyhledávání podle zadání uživatele můžete použít textové vyhledávání a pro vyhledávání podle vybraných složek můžete použít netextové vyhledávání.



  1. výstup mongoose chyba Chyba:spojení uzavřeno

  2. Jak vrátit počet aktualizovaných objektů v mongodb?

  3. Mongoose Jedinečné hodnoty ve vnořeném poli objektů

  4. MongoDB Text Index na všech polích pomocí Java