如果字段不在新文档中,则更新插入会删除该字段
Upsert removes field if it's not in the new document
让我们假设以下模型(注strict:false
):
var Test = db.model('Test', {
a: {type: String, required: true},
b: {type: String}
}, {strict: false});
我目前在数据库中有这个文档:
{
'a': 'hello',
'b': 'world',
'c': {
'x': 'embedded',
'z': 'document'
}
}
如果我upsert
以下文档:
doc = {
'a': 'hello',
'b': 'jack'
}
像这样:
Test.findOneAndUpdate({
a: 'hello'
}, doc, {upsert:true}, function(){});
我最终会得到:
{
'a': 'hello',
'b': 'jack'
}
换句话说,将擦除更新插入文档中不存在的字段c
。
如何在不擦除此类字段的情况下安全地更新插入?
奇怪,这应该按原样工作。也许您可以尝试显式设置字段:
doc = {$set: {
'a': 'hello',
'b': 'jack'
}};
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 输入字段将't获取更新的值
- 在控制器上使用“$watch”时,为什么不更新此隐藏字段
- 更新嵌套对象的多个字段
- 选择单选按钮更新2个输入字段
- KnockoutJS更新行和字段
- 当html选择/选项发生更改时,需要更新输入字段
- 通过 JavaScript 从主网格视图上的功能区按钮更新 CRM 2011 中的字段
- 输入字段未使用 ng-keydown 事件更新
- 单击“角度”复选框时更新不相关的字段
- 反应:以动态生成的形式根据另一个字段更新字段值
- 使用模态上的文件输入字段更新主视图上的隐藏字段
- 使用 Drupal 6 的表单 ahah 让一个下拉字段更新第二个下拉字段的值
- 获取 2 个输入字段中的舍入值,当其中一个输入字段更新时,这些输入字段会更新
- 通过输入字段更新javascript数组数据
- 角度表单验证-在字段更新时隐藏错误
- 保存由OnSave事件触发的字段更新
- Knockoutjs的日期时间字段更新不会刷新模型视图
- 当输入字段更新时,如何在knockout.js中更新observableArray项?
- Mongoose似乎不支持$max字段更新操作符,有什么建议吗?