如果字段不在新文档中,则Upsert将删除该字段

时间:2016-01-13 21:18:23

标签: javascript node.js mongodb mongoose upsert

我们假设以下模型(注意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

如何在不擦除此类字段的情况下安全地进行升级?

1 个答案:

答案 0 :(得分:0)

奇怪,这应该按原样运作。也许您可以尝试明确设置字段:

RedisMdule