@AnthonyWinzlet द्वारा पोस्ट किए गए उत्तर में नकारात्मक पक्ष यह है कि इसे उपयोगकर्ता संग्रह में सभी दस्तावेज़ों के माध्यम से मंथन करने और $lookup
निष्पादित करने की आवश्यकता है। जो अपेक्षाकृत महंगा है। तो आपके Users
. के आकार के आधार पर संग्रह ऐसा करने के लिए यह तेज़ हो सकता है:
users.pet
पर एक इंडेक्स डालें औरusers.car
:db.users.createIndex({pet: 1, car: 1})
cars.model
पर एक इंडेक्स लगाएं :db.cars.createIndex({model: 1})
- एक अनुक्रमणिका
pets.name
पर रखें :db.pets.createIndex({name: 1})
तब आप बस यह कर सकते थे:
- सभी मिलान करने वाली सूची प्राप्त करें
"Tesla"
कारें:db.cars.find({model: "Tesla"})
- सभी मिलान करने वाली सूची प्राप्त करें
"Mickey"
पालतू जानवर:db.pets.find({name: "Mickey"})
- उन उपयोगकर्ताओं को ढूंढें जिनमें आप रुचि रखते हैं:
db.users.find({car: { $in: [<ids from cars query>] }, pet: { $in: [<ids from pets query>] }})
यह पढ़ने और समझने में बहुत आसान है, साथ ही सभी तीन प्रश्न पूरी तरह से अनुक्रमित हैं, इसलिए उनसे उम्मीद की जा सकती है कि चीजें जितनी जल्दी हो सकें उतनी तेजी से हो सकती हैं।