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

Pymongo znajduje wartość w poddokumentach

Odpowiedź opublikowana przez @AnthonyWinzlet ma tę wadę, że musi przerzucić wszystkie dokumenty w kolekcji użytkowników i wykonać $lookup s, co jest stosunkowo kosztowne. Tak więc w zależności od rozmiaru Twoich Users kolekcji może to być szybsze:

  1. Umieść indeks na users.pet i users.car :db.users.createIndex({pet: 1, car: 1})
  2. Umieść indeks na cars.model :db.cars.createIndex({model: 1})
  3. Umieść indeks na pets.name :db.pets.createIndex({name: 1})

Następnie możesz po prostu zrobić to:

  1. Pobierz listę wszystkich pasujących "Tesla" samochody:db.cars.find({model: "Tesla"})
  2. Pobierz listę wszystkich pasujących "Mickey" zwierzęta:db.pets.find({name: "Mickey"})
  3. Znajdź użytkowników, którymi jesteś zainteresowany:db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})

Jest to dość łatwe do odczytania i zrozumienia, a wszystkie trzy zapytania są w pełni objęte indeksami, więc można oczekiwać, że będą tak szybkie, jak to tylko możliwe.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak najszybciej sprawdzić, kiedy dokonano ostatniej aktualizacji MongoDB?

  2. Jaki jest właściwy sposób radzenia sobie z połączeniami Mongodb?

  3. Zapytaj i zsumuj wszystko z mangustą

  4. MongoDB db.runCommand() z C#

  5. Symfony QueryBuilder zwracający kursor MongoDB zamiast tablicy obiektów