如何在不替换现有字段的情况下更新MongoDB中的记录?

Kau*_*ana 6 javascript mongodb node.js

当我更新记录时,它会删除现有字段并添加新字段.

这是更新前的记录:

{ "_id" : ObjectId("56a356863aa433ae37dc2cee"), "browser" : "Chrome", "version" : 47}
Run Code Online (Sandbox Code Playgroud)

这是我执行的命令:

db.collection('profiles')
  .update({ 
    '_id' : obj("56a356863aa433ae37dc2cee") }, 
    {"first_name" : first_name, "last_name" : last_name, "email" : email}, 
    function (err, result) {
      console.log(result);
  });
Run Code Online (Sandbox Code Playgroud)

这是我执行update命令后的记录:

{ "_id" : ObjectId("56a356c9a08487ed3719e40a"), "first_name" : "kaushik", "last_name" : "makwana", "email" : "kdmakwana" }
Run Code Online (Sandbox Code Playgroud)

nul*_*941 5

与更新现有集合字段相同,如果指定字段不存在,$ set将添加新字段.

> db.foo.find()
> db.foo.insert({"test":"a"})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> item = db.foo.findOne()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }
Run Code Online (Sandbox Code Playgroud)