我有一个包含多个文档的集合(称为客户端),每个文档代表一个客户端。每个客户端文档都包含一个 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 数组中的所有元素?