Mongodb脚本位置运算符

Mongodb脚本位置运算符,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在更新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}}) } })

我正在更新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}处得到一个语法错误
有解决方法吗?

您试图在初始化时动态地将值分配给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});
      }
    })
  }
})