如何用node.js中的dynamic字段更新文档
假设我在数据库中有一个文件,其结构如下:
id: 1, name: alex, age: 21
客户端和id:1
相同的文件有一些更新id:1
返回为;
id: 1, name: alex, age: 21, location: usa
在那里添加一个新的字段location
。
我想更新数据库中的文档。 我想添加这个新插入的字段,但我无法找出如何处理这种情况。 因为location
不是静态的,所以可以是surname
, job
等等。 所以新插入的字段是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简介中 。