如何高效地search子文档

我有以下模型:

var couponschema = new mongoose.Schema({ name: String, couponcode: String }); var userschema = new mongoose.Schema({ name: String, coupons: [couponschema] }); 

我需要find并删除所有优惠券与一个特定的coupon code

我找不到任何mongoose查询来批量删除多个文档中的多个子文档 。 因此,我留下迭代每个user文档,然后遍历coupon subdocs,看看是否有一个匹配的优惠券,然后删除它们 – 但这似乎不是一个优雅的解决scheme。

所以请build议一个干净的方式来做到这一点。 谢谢。

希望它会给你一个想法(使用$拉 ):

 db.user.update( { }, { $pull : { "coupons" : <...expression here...> // match specific coupons } }, { multi: true } ) 

更新:

 tUser.update({ 'coupons.couponcode': data.regid }, { $pull: { coupons: { couponcode: data.regid } } }, { multi: true, safe: true }, function (err, val) { // .. do something here }); 

Mongoose update API 在这里 。