use*_*182 5 mongoose mongodb node.js
我正在尝试返回与特定用户标识相关联的优惠券列表并填充_merchant引用.
此查询正确填充_merchant引用.如果我可以添加:
coupon.users.contains(myuserid)到我的查询将获得我需要的东西
db.couponModel.find().populate('_merchant').exec(function(err, coupons) {
res.send(coupons);
});
Run Code Online (Sandbox Code Playgroud)
或者此查询找到我需要的正确优惠券.如果我可以添加:
填充(_merchant)到我的查询,也将得到我需要的.
db.userModel.findById(req.params.id).populate('coupons').exec(function(err, user) {
res.send(user.coupons)
});
Run Code Online (Sandbox Code Playgroud)
架构
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' }],
});
Run Code Online (Sandbox Code Playgroud)
我需要这两个查询的混合来获得我想要的东西.
使用$ 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); })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4298 次 |
| 最近记录: |