【发布时间】:2013-09-18 02:31:32
【问题描述】:
我在 Mongoose (MongoDb) 中有这样的文档:
{
begin: Date,
end: Date
}
我想做的就是:
- 选择所有带有
end == null的文档 - 然后使用
end =“开始增加10天”更新它们
如何在一次更新中完成?
【问题讨论】:
标签: javascript node.js mongodb mongoose
我在 Mongoose (MongoDb) 中有这样的文档:
{
begin: Date,
end: Date
}
我想做的就是:
end == null 的文档
end =“开始增加10天”更新它们如何在一次更新中完成?
【问题讨论】:
标签: javascript node.js mongodb mongoose
目前,您无法在 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。
【讨论】:
此查询选择所有 end = null 的文档并使用新日期更新它
Collection.update({end:null}, {$set: {end:'new_date'}},{ multi: true });
【讨论】:
new_date 必须取决于每个文档,即每个更新的文档通常都不同