2013-02-13 20 views
5

मैं एक विशिष्ट उपयोगकर्ता आईडी से जुड़े कूपन की एक सूची वापस करने की कोशिश कर रहा हूं और _merchant संदर्भों को पॉप्युलेट करता हूं।मोंगोस ने निपुण क्वेरी

यह क्वेरी सही ढंग से _merchant refs को पॉप्युलेट करती है। मैं जोड़ सकता है, तो:

जहाँ मेरे सवाल के coupon.users.contains (myuserid) कि मिलेगा मैं

db.couponModel.find().populate('_merchant').exec(function(err, coupons) { 
    res.send(coupons); 
}); 

क्या जरूरत है या फिर इस प्रश्न के सही कूपन है कि मैं जरूरत है पाता है। अगर मैं जोड़ सकता हूं:

मेरी क्वेरी में populate (_merchant) populate जो मुझे चाहिए वह भी प्राप्त होगा।

db.userModel.findById(req.params.id).populate('coupons').exec(function(err, user) { 
    res.send(user.coupons) 
}); 

स्कीमा

var userSchema = new Schema({ 
    email: { type: String, required: true , unique: true }, 
    coupons: [{ type: Schema.ObjectId, ref: 'Coupon' }] 
}); 

var couponSchema = new Schema({ 
    _merchant: { type: Schema.ObjectId, ref: 'Merchant', required: true }, 
    couponid: { type: Number, required: true, unique: true }, 
    users: [{ type: Schema.ObjectId, ref: 'User' }] 


}); 

var merchantSchema = new Schema({ 
    name: { type: String, required: true , unique: true } 
    coupons: [{ type: ObjectId, ref: 'Coupon' }], 

}); 

मैं इन दो प्रश्नों में से कुछ संकर की जरूरत है कि मैं क्या चाहते हैं।

+0

मुझे लगता है कि एम्बेडेड दस्तावेज़ के एम्बेडेड दस्तावेज़ पर पॉपुलटिंग अभी तक समर्थित नहीं है। Https://github.com/LearnBoost/mongoose/issues/601#issuecomment-6520568 – idursun

+0

मुझे लगता है कि इसे रिलीज़ में दो दिन पहले रिलीज़ किया गया है लेकिन इसके लिए अभी तक कोई दस्तावेज़ नहीं है। इसके आसपास पाने के लिए कोई हैक? शायद $ का उपयोग करना? – user1071182

+0

https://github.com/LearnBoost/mongoose/pull/1292 – user1071182

उत्तर

0

उपयोग $ सभी विकल्प। db.couponModel.find ({उपयोगकर्ता: {$ सभी: [req.params.id]}})। Populate ('_ merchant')। Exec (function (err, coupons) {console.log (कूपन);})

संबंधित मुद्दे