MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak znaleźć podobne dokumenty w MongoDB?

Przede wszystkim Twoje dane powinny zostać przemodelowane jak poniżej:

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

Dodatkowa "Pozycja" nie dodaje żadnych dodatkowych informacji ani nie ułatwia dostępu do danych w żaden sposób.

Następnie musisz utworzyć indeks tekstowy . Dokumenty stwierdzają, że

Więc po prostu robimy

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

Teraz możemy wykonać $text szukaj :

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

które powinny dać ci najistotniejsze dokumenty.

Możesz jednak również przeprowadzić wyszukiwanie nietekstowe dla bezpośrednich dopasowań:

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

lub dla wielu składników

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

Tak więc do wyszukiwania według danych wprowadzonych przez użytkownika można użyć wyszukiwania tekstowego, a do wyszukiwania według wybranych składników można użyć wyszukiwania nietekstowego.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Obliczone pola grupowania w MongoDB

  2. Jak zabezpieczyć serwer ClusterControl

  3. Jak sprawić, by zapytanie LIKE działało w MongoDB?

  4. Warunkowo uwzględnij etapy potoku agregacji

  5. Nie można połączyć się z mongoDB uruchomioną w kontenerze docker