Mongoose subquery query

I am trying to return a list of coupons associated with a specific user id and populate _merchant links.

This request correctly fills _merchant links. If I could add:

where is coupon.users.contains (myuserid) in my request, which will get what I need

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

Or this query finds the right coupons that I need. If I could add:

fill out a (_merchant) request that will also get what I need.

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

Scheme

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

});

I need a hybrid of these two queries in order to get what I want.

+5
source share
2 answers

, $all. : https://github.com/LearnBoost/mongoose/blob/master/test/query.test.js#L396 http://docs.mongodb.org/manual/reference/operator/all/#_S_all

:

db.couponModel.find({users: {$all:[req.params.id]}}).populate('_merchant').exec(function(err, coupons) { console.log(coupons); })
+5

$all. db.couponModel.find({users: {$ all: [req.params.id]}}). populate ('_ merchant'). exec (function (err, coupons) {console.log();})

0

All Articles