【问题标题】:Mongoose update document with conditions带条件的猫鼬更新文档
【发布时间】:2017-05-10 09:43:12
【问题描述】:
如果此 ID 是当前用户的 Id 并且设置了此字段,我需要取消设置作为 ObjectId 的 mongo 字段并引用另一个模式。在其他情况下,如果未设置此字段,则应设置当前用户 ID。如果该字段已设置且 ObjectID 与当前用户 ID 不匹配,则 mongo 应返回现有文档,但不会对 ObjectID 字段进行更改。
现在我通过 ID 找到条目,然后在我的 JS 代码中检查案例。然后我执行另一个查询以更新文档。但我认为这可以由 mongo 在一个查询中完成。
我在我的 nodeJS 中使用猫鼬
【问题讨论】:
标签:
javascript
node.js
mongodb
mongoose
【解决方案1】:
Mongoose findOneAndUpdate 是您正在寻找的函数。它具有以下通用语法。
query.findOneAndUpdate(conditions, update, options, callback)
编辑:附加一个示例查询。
var query = {"_id": id};
var update = {name: {first: 'john', last: 'smith'}};
var options = {new: true};
People.findOneAndUpdate(query, update, options, function(err, person) {
if (err) {
console.log('got an error');
}
// at this point person is null.
});