2013-02-13 159 views
5

我試圖返回與特定用戶標識關聯的優惠券列表並填充_merchant引用。貓鼬嵌套填充查詢

此查詢正確填充_merchant參考。如果我可以添加:

其中coupon.users.contains(myuserid)到我的查詢會得到什麼,我需要

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

或者此查詢發現,我需要正確的優惠券。如果我可以添加:

填充(_merchant)到我的查詢,也將得到我所需要的。

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 2013-02-13 12:59:26

+0

我認爲它在幾天前的發行版中受到支持,但目前還沒有文檔。任何黑客來解決它?使用$也許? – user1071182 2013-02-13 13:26:55

+0

https://github.com/LearnBoost/mongoose/pull/1292 – user1071182 2013-02-13 13:39:37

回答

0

使用$所有選項。 ('users':{$ all:[req.params.id]}})。populate('_ merchant')。exec(function(err,coupons){console.log(coupons);})