我有以下文件:
{ "id" : "1",
"name": "Paul",
"a": { "b" : [{"name" : "laura", "lastname" : "Palmer"}]}
}
现在我想更新 b 中的每个姓氏。
我试过这个:
db.organizations.update({"name" : "Paul", "a.b" : {$exists: true}},
{ "$set" : {"a.b.$.lastname" : "no_lastname"}});
但是我得到: 如果没有包含数组的相应查询字段,则无法应用位置运算符。
有人知道我应该做什么吗?
最佳答案
您可以使用 cursor.forEach()
mongo shell 中的游标方法来实现这一点:
db.organizations.find({"name" : "Paul", "a.b" : {$exists: true}}).forEach(function(doc) {
array = doc.a.b;
array.forEach(function(elem) {
elem.lastname="no_lastname"
});
db.organizations.update({_id:doc._id}, {$set:{"a.b":array}});
})
关于mongodb - 如果没有包含数组的相应查询字段,则无法应用位置运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064685/