我正在将mongoDB与javascript一起使用。我正在使用以下函数更新集合中的项目,并将“ server_name”作为变量attribute_name传递:
async update_server_attribute(db, server_id, attribute_name, new_value){
var my_query = { "server_id": server_id }
var updated_val = { $set: {attribute_name: new_value } }
db.collection("servers").updateOne(my_query, updated_val)
},
我希望字典会更新为以下内容:
{"server_name" : new_val}
相反,它执行以下操作:
{"server_name" : old_value, "attribute_name" : new_val}
谁能解释这种奇怪的行为以及如何解决?
答案 0 :(得分:3)
在JavaScript中,{attribute_name: new_value }
与{"attribute_name": new_value }
相同。要使JavaScript使用attribute_name
的 value 作为键,请使用computed property name语法,并用方括号括起来:
var updated_val = { $set: {[attribute_name]: new_value } }