我有以下型号:

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

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

我需要找到并删除所有带有特殊coupon code的优惠券。
我找不到任何Mongoose查询来批量删除跨多个文档的多个子文档。因此,我只需要遍历每个user文档,然后遍历coupon子文档,看看是否有匹配的优惠券,然后删除它们——但这似乎不是一个优雅的解决方案。
所以请建议一个干净的方法。谢谢。

最佳答案

希望它能给你一个想法(使用$pull):

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
});

猫鼬updateapihere

10-06 15:32