sql >> Databáze >  >> NoSQL >> MongoDB

Pymongo najít hodnotu v dílčích dokumentech

Odpověď odeslaná @AnthonyWinzlet má nevýhodu v tom, že potřebuje procházet všemi dokumenty v kolekci uživatelů a provádět $lookup s, která je poměrně nákladná. Tedy v závislosti na velikosti vašich Users sběr, může to být rychlejší:

  1. Umístěte index na users.pet a users.car :db.users.createIndex({pet: 1, car: 1})
  2. Umístěte index na cars.model :db.cars.createIndex({model: 1})
  3. Umístěte index na pets.name :db.pets.createIndex({name: 1})

Pak můžete jednoduše udělat toto:

  1. Získejte seznam všech odpovídajících "Tesla" auta:db.cars.find({model: "Tesla"})
  2. Získejte seznam všech odpovídajících "Mickey" mazlíčci:db.pets.find({name: "Mickey"})
  3. Najděte uživatele, kteří vás zajímají:db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})

To je docela snadné číst a pochopit, navíc všechny tři dotazy jsou plně pokryty indexy, takže lze očekávat, že budou tak rychlé, jak jen to jde.



  1. Jak pozastavit nebo obnovit úkol s celerem?

  2. WiredTiger a aktualizace na místě

  3. Vztah MongoDB index/RAM

  4. Jak vytvořit tabulkový kurzor v prostředí MongoDB?