我正在考虑更新 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});
}
})
}
})