带有ES6模板字符串的MongoDB Object键

时间:2015-06-21 21:12:35

标签: javascript mongodb ecmascript-6

我试图用这个来更新我的集合中的数组:

 var str = "list.0.arr";
    db.collection('connect').update({_id: id}, {$push:  { `${str}`: item}}); 

如果我这样做,这个确切的字符串就可以了:

db.collection('connect').update({_id: id}, {$push:  { "list.0.arr": item}}); 

这是为了表明它有效,但是当我使用第一个解决方案时,它会抛出错误Unexpected token

我的问题是,如何让顶级解决方案作为Object键工作?

2 个答案:

答案 0 :(得分:4)

模板文字不能用作对象文字中的键。改为使用计算属性:

db.collection('connect').update({_id: id}, {$push: {[str]: item}}); 
//                                                  ^^^^^

另见Using a variable for a key in a JavaScript object literal

答案 1 :(得分:1)

在更新中使用字符串作为键之前创建更新文档:

var str = "list.0.arr",
    query = { "_id": id },
    update = { "$push": {} };
update["$push"][str] = item;
db.collection('connect').update(query, update);