[英]Add new element to mongoDB document array only if a certain condition is met
[英]How to update a document only if a condition is met?
我试图在express API中实现put方法,以允许用户更新文档,但前提是要满足条件。 假设我有一个Instance
文档。 它的一个属性被executed
,这可能是true
,如果该实例是执行或false
,如果它不是。 基本上,我希望仅当实例尚未执行时才允许用户更新此文档,即,如果executed
属性为false。
我想出了这种方法,但是我想知道是否存在更好的方法,例如,使用架构定义中的pre
函数。
Instance.findOne({'_id': req.params.id}, function(err, element){
if(!element.executed){
Instance.findOneAndUpdate({'_id': req.params.id}, {$set: req.body}, function(err, element){
...
});
}
})
谢谢!
您可以使用更新方法,
Instance.update({'_id': req.params.id, executed: false}, req.body, function(){})
如果要更新单个文档,可以使用:
Instance.findOneAndUpdate({
'_id': req.params.id,
executed: false
}, req.body, {
new: true
}, (err, instance) => {
if(err){
console.error('error occurred', err);
} else {
console.log('updated instance', instance)
}
});
{new: true}
将返回更新的实例。
有关更多详细信息,请在此处查看文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.