我正在考虑更新mongodb文档中的数组对象,如下所示
var cursor = db.coll.find();
cursor.forEach(function(x){
if(x.arr) {
x.arr.forEach(function(y,i){
if(y.field1) {
db.coll.update({_id: x._id}, {$set:{'arr.'+i+'.field1': 'x' + y.field1}})
}
})
}
})
我在{$set:{'arr.'+i+'.field1': 'x' + y.field1}}
收到语法错误
有解决方法吗?
答案 0 :(得分:1)
您正尝试在初始化时动态地将值分配给JavaScript对象的键。只需单独创建它,然后在以后的步骤中分配密钥。
var cursor = db.coll.find();
cursor.forEach(function(x){
if(x.arr) {
x.arr.forEach(function(y,i){
if(y.field1) {
var setStmt = {};
setStmt['arr.'+i+'.field1'] = 'x' + y.field1;
db.coll.update({_id: x._id}, {$set: setStmt});
}
})
}
})