如何在不replace现有字段的情况下更新MongoDB中的logging?

当我更新logging时,它会删除现有的字段并添加新的字段。

这是更新之前的logging:

{ "_id" : ObjectId("56a356863aa433ae37dc2cee"), "browser" : "Chrome", "version" : 47} 

这是我执行的命令:

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

这是执行update命令后的logging:

 { "_id" : ObjectId("56a356c9a08487ed3719e40a"), "first_name" : "kaushik", "last_name" : "makwana", "email" : "kdmakwana" } 

与更新现有集合字段相同,如果指定字段不存在,$ 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" } 

使用$set来更新字段或添加新的字段。 您的查询应该是:

 db.collection('profiles').update( { '_id' : obj("56a356863aa433ae37dc2cee") }, { $set:{{"first_name" : first_name, "last_name" : last_name, "email" : email}} }, function (err, result){ console.log(result); });