我试图用这个来更新我的集合中的数组:
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键工作?
答案 0 :(得分:4)
模板文字不能用作对象文字中的键。改为使用计算属性:
db.collection('connect').update({_id: id}, {$push: {[str]: item}});
// ^^^^^
答案 1 :(得分:1)
在更新中使用字符串作为键之前创建更新文档:
var str = "list.0.arr",
query = { "_id": id },
update = { "$push": {} };
update["$push"][str] = item;
db.collection('connect').update(query, update);