我在mongo db中有此文档
{ _id: 5e1f159e03ffa0f3c79e17ff,
issue_title: 'test ',
issue_text: 'tttttttttttttest',
created_by: 'ahmad',
created_on: 2020-01-15T13:37:32.119Z,
updated_on: 2020-01-15T13:37:32.119Z,
assigned_to: '',
status_text: '',
open: true }
我希望用户一次更新任意多个字段。
我不知道要在Advance中更新的字段数。
我想发送这样的查询updated_issue = { id: '_id', open:false, ...}
,因此,只有updated_issue
中的字段会被修改。
我的代码如下:
...
updated_issue = { id: '_id', open:false, ..}
...
var keys = Object.keys(update_issue);
db.collection(project).updateOne({_id:id},
{ for(var k of keys) { $set: { k: update_issue[k]} } }, /* problem is this line */
{new:true}, (err,data )=>{
res.tyep('text').send('success');
});
...
我想循环抛出一个对象,并将其值分配给数据库中的相应字段。无需修改其他字段
答案 0 :(得分:0)
答案是用$set
准备对象,然后更新文档。
...
updated_issue = { id: '_id', open:false, ..}
...
var keys = Object.keys(update_issue);
cost tmp = {$set:{}}; for(var k of keys) { tmp.$set[k] = update_issue[k] };
db.collection(project).updateOne({_id:id} , tmp , {new:true}, (err,data )=>{
res.tyep('text').send('success');
});
...
答案 1 :(得分:-1)
我相信您可以通过使用“ update_issue”代替 “ {for(var k of key of key){$ set:{k:update_issue [k]}}}}”,因为它是一个对象。
updated_issue = { id: "_id", open: false, ...};
var keys = Object.keys(update_issue);
db.collection(project).updateOne(
{ _id: id },
update_issue ,
{ new: true },
(err, data) => {
res.tyep("text").send("success");
}
);