node.js - 如何有效地搜索子文档

标签 node.js mongodb mongoose

我有以下模型:

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/

相关文章:

node.js - Heroku NodeJS 找不到模块

database - 在本地使用像 mLab 这样的 DBaaS 而不是 MongoDB 有什么优势吗?

mongodb - 如何使用 Homebrew 软件安装早期版本的 mongodb?

javascript - Mongoose 从集合中获取所有键值并将其放入数组中

node.js - Clojurescript + Node.js 0.12.7 问题(错误 "process.binding(' evals')没有这样的模块 : evals")

javascript - 同步与异步数据库访问

json - 在 Elastic Beanstalk 单实例上配置 SSL

node.js - Mongoose 地理空间与多边形相交

javascript - javascript 函数怎么也可以是对象呢?

javascript - 有没有办法从 Mongoose 模式中获取所有唯一的数组值?