के क्षेत्र में मॉडल पर नेस्टेड क्वेरी की जांच की है ऐसा लगता है कि इस विषय पर स्टैक ओवरफ्लो पर बहुत सारे प्रश्नोत्तर हैं, लेकिन मुझे कहीं भी सटीक उत्तर नहीं मिल रहा है।मोंगोस ने संदर्भित मॉडल
मैं क्या है:
मैं कंपनी और व्यक्ति मॉडल:
var mongoose = require('mongoose');
var PersonSchema = new mongoose.Schema{
name: String,
lastname: String};
// company has a reference to Person
var CompanySchema = new mongoose.Schema{
name: String,
founder: {type:Schema.ObjectId, ref:Person}};
मैं क्या जरूरत है:
सभी कंपनियों कि lastname "रॉबर्टसन" के साथ लोगों की स्थापना की है का पता लगाएं
मैंने जो कोशिश की:
Company.find({'founder.id': 'Robertson'}, function(err, companies){
console.log(companies); // getting an empty array
});
तो मैं लगा कि व्यक्ति एम्बेडेड नहीं है, लेकिन संदर्भित, तो मैं पॉप्युलेट करने के लिए संस्थापक-व्यक्ति से भरें इस्तेमाल किया और फिर 'रॉबर्टसन' उपनाम के साथ खोजने के उपयोग करने के लिए
// 1. retrieve all companies
// 2. populate their founders
// 3. find 'Robertson' lastname in populated Companies
Company.find({}).populate('founder')
.find({'founder.lastname': 'Robertson'})
.exec(function(err, companies) {
console.log(companies); // getting an empty array again
});
मैं अभी भी क्वेरी कर सकता है की कोशिश की स्ट्रिंग के रूप में व्यक्ति की आईडी वाली कंपनियां। लेकिन यह बिल्कुल ठीक नहीं है जैसा कि आप समझ सकते हैं
Company.find({'founder': '525cf76f919dc8010f00000d'}, function(err, companies){
console.log(companies); // this works
});
आप सही हैं, एक संयुक्त कैसा दिखाई देता है कि। मैंने आपको सबसे सरल नेस्टेड क्वेरी दी है जिसे मैं लागू करने के बारे में सोच रहा हूं, शायद यह मामला है जहां डीबी के संबंध अधिक आसान हैं। लेकिन वैसे भी, आपका समाधान काम किया। Thnx! – AzaFromKaza
हैलो, मैं इस जवाब की तलाश कर रहा था क्योंकि मुझे एक ही समस्या है, एक आखिरी सवाल हालांकि, क्या यह बदल गया है या क्या यह अब mongoose 3.8.5 पर संभव है? मुझे एहसास हुआ क्योंकि इस सवाल को पोस्ट किया गया था, मोंगोस ने कुछ संस्करणों को ऊपर उठाया। – maumercado
@maumercado नहीं, यह नहीं बदला है, और इसकी संभावना नहीं है। – JohnnyHK