sql >> Database teknologi >  >> NoSQL >> MongoDB

Pymongo finder værdi i underdokumenter

Svaret indsendt af @AnthonyWinzlet har den ulempe, at det skal bladre gennem alle dokumenter i brugersamlingen og udføre $lookup s hvilket er relativt dyrt. Altså afhængigt af størrelsen på dine Users indsamling kan det meget vel være hurtigere at gøre dette:

  1. Sæt et indeks på users.pet og users.car :db.users.createIndex({pet: 1, car: 1})
  2. Sæt et indeks på cars.model :db.cars.createIndex({model: 1})
  3. Sæt et indeks på pets.name :db.pets.createIndex({name: 1})

Så kunne du ganske enkelt gøre dette:

  1. Få listen over alle matchende "Tesla" biler:db.cars.find({model: "Tesla"})
  2. Få listen over alle matchende "Mickey" kæledyr:db.pets.find({name: "Mickey"})
  3. Find de brugere, du er interesseret i:db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})

Det er ret nemt at læse og forstå, og alle tre forespørgsler er fuldt dækket af indekser, så de kan forventes at være så hurtige, som tingene kan blive.



  1. redis lua script vs. enkeltopkald

  2. Covert RFC3339 DateTime to Date i java

  3. Mongoimport csv-filer med string _id og upsert

  4. Mongoose forbindelse