【问题标题】:MongoDB - Updating all matching Nested DocumentsMongoDB - 更新所有匹配的嵌套文档
【发布时间】:2015-04-18 10:30:15
【问题描述】:

我有这个 MongoDB 文档集合。我想更新“ContractorTelephone”:“0865215486”的所有文档的 PropertyContractors 电话号码。

{
"_id": "4",
"PropertyType": "House",
"PropertyNameNumber": "49",
"PropertyStreet": "Paul Street",
"PropertyTown": "Farmleigh",
"PropertyCity": "Waterford City",
"PropertyCounty": "Co Waterford",
"PropertyBedrooms": "3",
"PropertyDescription": "Central, Cheap",
"PropertyFacilities": [
    {
        "FacilitiesSmoking": "Yes",
        "FacilitiesPets": "Yes",
        "FacilitiesBroadBand": "Yes",
        "FacilitiesTV": "Yes"
    }
],
"PropertyAvailable": "1",
"PropertyContractor": [
    {
        "ContractorName": "John Murphy",
        "ContractorTelephone": "0865215486",
        "ContractorType": "Plumber"
    }
]

}

我试过了

db.Property.update(
{ PropertyContractor.ContractorTelephone: "0865215486" },
{
  $set: { PropertyContractor.ContractorTelephone: "0854854215" }
},
  { multi: true }
 )

但它只是说 .语法错误

提前致谢。

【问题讨论】:

  • 也许这行得通? $set: { "PropertyContractor.ContractorTelephone": "0854854215" }
  • 如果你只是直接复制 $set: { "PropertyContractor.ContractorTelephone": "0854854215" } 它仍然会抛出一个语法错误:

标签: mongodb nosql


【解决方案1】:

使用$ positional operator,它标识要更新的数组中的一个元素,而无需明确指定该元素在数组中的位置:

db.Property.update(
    { 
       "PropertyContractor.ContractorTelephone": "0865215486" 
    },
    {
        "$set": {
           "PropertyContractor.$.ContractorTelephone": "0854854215" 
        }
    },
    { "multi": true }
 );

【讨论】:

  • 美丽。谢谢。
  • @ChrisMaher 不用担心 :-)
猜你喜欢
  • 2016-08-04
  • 1970-01-01
  • 2021-05-01
  • 2010-11-11
  • 1970-01-01
  • 2021-11-12
  • 2014-03-04
  • 2017-02-20
  • 2021-02-13
相关资源
最近更新 更多