使用$ set运算符进行正常更新和更新之间有什么区别?

时间:2017-09-30 12:46:40

标签: javascript mongodb mongoose

正常方法:

module.exports = (_id, newInfo) => {
    return User.update( {_id} , newInfo);
};

使用$ set运算符:

module.exports = (_id, newInfo) => {
    return User.update( {_id} , {$set: newInfo} );
};

2 个答案:

答案 0 :(得分:1)

正如它所说here

不使用$set进行更新,

  

如果替换对象是文档,匹配文档将   被替换(如果没有设置_id,则除了_id值)

我们使用$set

  

要仅更新选定的字段,需要使用$ set运算符。   替换对象后面替换作者值但离开   其他一切都完好无损。

答案 1 :(得分:0)

如果没有现有

$Set会创建一个新字段

  

如果该字段不存在,$ set将添加具有指定值的新字段,前提是新字段不违反类型约束。如果为不存在的字段指定虚线路径,$ set将根据需要创建嵌入文档,以实现该字段的虚线路径。

https://docs.mongodb.com/manual/reference/operator/update/set/