在Mongoose中更新相关的日期字段

时间:2013-09-04 10:11:59

标签: javascript node.js mongodb mongoose

我在Mongoose(MongoDb)中有这样的文件:

{
  begin: Date,
  end: Date
}

我想做的就是:

  1. 选择end == null
  2. 的所有文件
  3. 然后使用end =更新它们“开始增加10天”
  4. 如何在一次更新中完成?

2 个答案:

答案 0 :(得分:1)

此查询选择end = null的所有文档,并使用新日期更新它     Collection.update({end:null}, {$set: {end:'new_date'}},{ multi: true });

答案 1 :(得分:1)

目前,您无法在update()中引用文档的当前属性。相反,您必须遍历文档as described in this answer。在您的情况下,它看起来更像是这样:

db.docs.find({end:null}).forEach(
  function(doc) {
    doc.end = doc.begin + 10;
    db.docs.save(doc);
  }
)

这是Mongo shell的语法 - 您可能需要对Mongoose as per the API进行一些更改。