如何用node.js中的dynamic字段更新文档

假设我在数据库中有一个文件,其结构如下:

id: 1, name: alex, age: 21 

客户端和id:1相同的文件有一些更新id:1返回为;

 id: 1, name: alex, age: 21, location: usa 

在那里添加一个新的字段location

我想更新数据库中的文档。 我想添加这个新插入的字段,但我无法找出如何处理这种情况。 因为location不是静态的,所以可以是surnamejob等等。 所以新插入的字段是dynamic的,我不知道提前。

如果字段location是静态的,我可以写一个查询为;

 db.collection("user").updateOne( {id: 1}, {$set: {name: "alex", age: "21", location: "usa"}}, function(err, result){ if(err){} else{} }); 

但现在,我怎样才能用这个新添加的字段来更新文档呢?

如果你说你有一个更新的对象:

 id: 1, name: alex, age: 21, location: usa 

那么我假设你有一些对象具有以下值:

 { id: 1, name: 'alex', age: 21, location: 'usa' } 

例如,作为parsing从客户端发送的这个JSON的结果:

 { "id": 1, "name": "alex", "age": 21, "location": "usa" } 

如果你在一个名为object的variables中有这个对象,那么你所要做的就是:

 db.collection("user") .updateOne({id: object.id}, {$set: object}, function (err, result) { if (err) { // handle success } else { // handle success } }); 

但是很可能你需要使用_id而不是id

 db.collection("user") .updateOne({_id: object._id}, {$set: object}, function (err, result) { if (err) { // handle success } else { // handle success } }); 

如果你想能够删除属性,那么甚至可以:

 db.collection("user") .replaceOne({_id: object._id}, object, function (err, result) { if (err) { // handle success } else { // handle success } }); 

我不build议把数据放入数据库中,至less不要进行某种validation,但是可以按照上面所示的方法去做。

更多信息请参阅:

  • 更新特定字段
  • replace文档

在Node.js的MongoDB简介中 。