MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso encontrar documentos semelhantes no MongoDB?


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.