Antes de tudo, seus dados devem ser remodelados conforme abaixo:
{
name: "Burger",
ingredients: [
"bread",
"cheese",
"tomato",
"beef"
]
}
O "Item" extra não adiciona nenhuma informação adicional nem ajuda a acessar os dados de forma alguma.
Em seguida, você precisa criar um índice de texto . Os documentos afirmam que
Então nós simplesmente fazemos um
db.collection.ensureIndex({"ingredients":"text"})
Agora podemos fazer um
$text
pesquisar
:db.collection.find(
{ $text: { $search: "bread beef" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
que deve fornecer os documentos mais relevantes.
No entanto, o que você também pode fazer é uma pesquisa sem texto para correspondências diretas:
db.collection.find({ingredients:"beef"})
ou para vários ingredientes
db.collections.find({ ingredients: { $all: ["beef","bread"] } })
Portanto, para pesquisar por entrada do usuário, você pode usar a pesquisa de texto e, para pesquisar por ingredientes selecionados, pode usar a pesquisa sem texto.