2013-02-13 14 views
5

Belirli bir kullanıcıyla ilişkili kuponların listesini döndürmeye çalışıyorum ve _merchant referanslarını dolduruyorum.Mongoose iç içe populate sorgusu

Bu sorgu, _merchant referanslarını doğru şekilde doldurur. Ben eklemek olsaydı: Ben

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

ihtiyaç Ya da bu sorgu ihtiyacım doğru kuponları ne bulursa alacağı benim sorguya

coupon.users.contains (MyUserID). Ekleyebildiğim şeyi de alabildiysem:

Sorgulamamın içine (_merchant) ekleyebilir miyim?

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

Şemalar

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' }], 

}); 

İstediğimi elde etmek için bu iki sorgu bazı melez gerekir.

+0

Gömülü belgenin gömülü belgesini doldurmak henüz desteklenmiyor. Bkz. Https://github.com/LearnBoost/mongoose/issues/601#issuecomment-6520568 – idursun

+0

Sanırım birkaç gün önce sürümde destekleniyor ancak bunun için henüz doküman yok. Etrafında dolaşmak için herhangi bir hack var mı? Belki de $ kullanarak? – user1071182

+0

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

cevap

0

Kullanım $ tüm seçeneği. db.couponModel.find ({users: {$ all: [req.params.id]}}) doldurun ('_ tüccar') exec (işlev (err, kuponlar) {console.log (kuponlar);))