【发布时间】:2017-03-15 12:55:10
【问题描述】:
假设我有一个包含多个字段的架构。如果文档与我的查询匹配,我只想更新 ONE 字段。但是,如果没有,我想创建一个包含所有字段值的新文档。有没有办法为此使用Model.findOneAndUpdate?
这是更具体的代码以及我尝试过的代码:
var mg = require('mongoose');
var Record = mg.model ("record", {
field1: Number,
field2: Number,
field3: Number,
});
//Update field1 ONLY if found using findOneAndUpdate, else create with all fields
var query = {//My Query},
update = {field1: 10},
options = {upsert: true, new: true, setDefaultsOnInsert: true};
Record.findOneAndUpdate(query, update, options, function(err,result){
//Do stuff with doc
});
以上代码正确更新field1,但是当没有文档匹配查询时,会创建一个没有field2或field3的新文档
【问题讨论】: