[英]MongoDB update all elements of nested array within all documents
我有一个集合(称为客户),其中包含多个文档,每个文档代表一个客户。 每个客户文档包含一个phoneNumber文档数组。 我想更新集合中所有客户端文档中的所有phoneNumber文档,以向每个phoneNumber文档添加readOnly属性。
挑战在于某些phoneNumber文档具有readOnly属性,我认为这让我失望了...
下面的示例JSON文档;
{
"_id" : ObjectId("5baa8e5da61b7842284937b7"),
"clientID" : "00001",
"firstName" : "Jonathan",
"middleName" : "Herbert",
"lastName" : "Alexander",
"dateOfBirth" : "1965-04-04",
"email" : "jonalex@hcare.com",
"phoneNumbers" : [
{
"phoneID" : "001",
"number" : "(404) 242-5939",
"phoneType" : "HOME"
},
{
"phoneID" : "001",
"number" : "(404) 242-5939",
"phoneType" : "HOME"
"readOnly" : true
},
{
"phoneID" : "001",
"number" : "(404) 242-5939",
"phoneType" : "HOME"
}
],
"gender" : "M"
}
在此示例中,我希望所有phoneNumber文档都具有readOnly:false属性。
我尝试使用以下内容...
db.Clients.update(
{},
{ $set: { "phoneNumbers.$[].readOnly" : true } },
{ multi: true}
)
...但是给我一个错误的提示,那就是不打算使用零件来遍历元素,所以我陷入了困境。
如何更新此集合中的所有文档,以将readOnly字段添加到每个文档的嵌套phoneNumbers数组中的所有元素?
这将是一个示例查询。
这会将所需的元素推送到每个电话号码文档中。 如果您不尝试
var results = db.Clients.find({"phoneNumbers.readOnly" : {$exists : false } });
results.forEach(function (result){
result.phoneNumbers.forEach(function (doc){
doc.push({"phoneNumbers.$[].readOnly" : true })
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.