2013-02-13 7 views
5

Tôi đang cố trả lại danh sách các phiếu thưởng được liên kết với một userid cụ thể và điền vào các tham chiếu _merchant.Mongoose lồng nhau truy vấn điền

Truy vấn này điền chính xác các tham chiếu _merchant. Nếu tôi có thể thêm:

nơi coupon.users.contains (myuserid) để truy vấn của tôi rằng sẽ có được những gì tôi cần

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

Hoặc truy vấn này thấy các phiếu giảm giá đúng mà tôi cần. Nếu tôi có thể thêm:

điền (_merchant) vào truy vấn của tôi cũng sẽ nhận được những gì tôi cần.

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

Schemas

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

}); 

Tôi cần một số lai của hai truy vấn này để có được những gì tôi muốn.

+0

Tôi đoán việc điền vào tài liệu nhúng của tài liệu được nhúng chưa được hỗ trợ. Xem https://github.com/LearnBoost/mongoose/issues/601#issuecomment-6520568 – idursun

+0

Tôi nghĩ rằng nó được hỗ trợ trong bản phát hành từ một vài ngày trước nhưng chưa có tài liệu nào cho nó. Bất kỳ hacks để có được xung quanh nó? Sử dụng $ trong có lẽ? – user1071182

+0

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

Trả lời

0

Sử dụng $ tất cả tùy chọn. db.couponModel.find ({users: {$ all: [req.params.id]}}). Điền ('_ merchant'). Exec (chức năng (err, phiếu giảm giá) {console.log (phiếu giảm giá);})