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í.