我正在尝试更新MongoDB文档中的值。该文档有很多字段,但我只想根据我在UI中更改的字段指定其中的一些字段。
var monthField='calendar.m'+month+'.result';
var triField='calendar.t'+trimester+'.result';
var yearField="calendar.year.result";
Objective.update({_id:{$in:objective.parents}},{
$inc:
{
yearField:transaction.value,
monthField:transaction.value,
triField:transaction.value
}},
{multi:true, upsert:true}
)
不幸的是,上面的代码并未将yearField
,monthField
和triField
“评估”为其字符串值,而是尝试更新,就像文档中存在这些字段一样。
我知道我可以找到文件,改变价值观,然后一个一个地保存它们,但有没有办法做我想做的事情?在一个更新行中做这件事要好得多。
答案 0 :(得分:5)
由于你正在使用node.js,你可以使用computed property names,只需将名字用括号括起来:
var monthField='calendar.m'+month+'.result';
var triField='calendar.t'+trimester+'.result';
var yearField="calendar.year.result";
Objective.update({_id:{$in:objective.parents}},{
$inc:
{
[yearField]:transaction.value,
[monthField]:transaction.value,
[triField]:transaction.value
}},
{multi:true, upsert:true}
)
此语法已添加到ES2015中的规范中,虽然尚未普及,但在node.js中受支持。