我有以下模型:
var couponschema = new mongoose.Schema({
name: String,
couponcode: String
});
var userschema = new mongoose.Schema({
name: String,
coupons: [couponschema]
});
我需要查找并删除所有具有特定优惠券代码
的优惠券。
我找不到任何 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
});
Mongoose 更新
API here .
关于node.js - 如何有效地搜索子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588064/