如果此 ID 是当前用户的 Id 并且设置了此字段,我需要取消设置 mongo 字段,该字段是 ObjectId 并引用另一个架构。在其他情况下,如果未设置此字段,则应设置当前用户 ID。如果设置了该字段并且 ObjectID 与当前用户 ID 不匹配,则 mongo 应返回现有文档,但不会对 ObjectID 字段应用任何更改。
现在我通过 ID 查找条目,然后检查 JS 代码中的情况。然后我执行另一个查询以更新文档。但我认为这可以通过 mongo 在一个查询中完成。
我在我的 NodeJS 中使用 Mongoose
最佳答案
Mongoose findOneAndUpdate是您正在寻找的函数。它具有以下通用语法。
query.findOneAndUpdate(条件、更新、选项、回调)
编辑:附加示例查询。
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.
});
关于javascript - Mongoose 有条件更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322546/