sql >> Databasteknik >  >> NoSQL >> MongoDB

Pymongo hittar värde i underdokument

Svaret som postats av @AnthonyWinzlet har nackdelen att det måste gå igenom alla dokument i användarens samling och utföra $lookup s vilket är relativt dyrt. Så beroende på storleken på dina Users insamling kan det mycket väl vara snabbare att göra detta:

  1. Sätt ett index på users.pet och users.car :db.users.createIndex({pet: 1, car: 1})
  2. Sätt ett index på cars.model :db.cars.createIndex({model: 1})
  3. Sätt ett index på pets.name :db.pets.createIndex({name: 1})

Då kan du helt enkelt göra så här:

  1. Hämta listan över alla matchande "Tesla" bilar:db.cars.find({model: "Tesla"})
  2. Hämta listan över alla matchande "Mickey" husdjur:db.pets.find({name: "Mickey"})
  3. Hitta användarna du är intresserad av:db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})

Det är ganska lätt att läsa och förstå plus att alla tre frågorna är helt täckta av index så att de kan förväntas vara så snabba som möjligt.



  1. Hur tar man bort ett dokument som refereras av ett id i mongoDB från php?

  2. Mongo väntar på 27017 även efter ominstallation

  3. ClusterControl - Advanced Backup Management - MongoDB

  4. kan inte komma åt req.users egenskaper