使用字段名称中的通配符更新MongoDB文档

时间:2016-10-09 21:26:12

标签: mongodb

有一个相当深度嵌套的文档,嵌套的一部分包括一个ObjectIDs的哈希对象和一个对应的对象。我需要通过更新嵌套对象中的一个值来更新集合中的所有文档。所以我知道如果我的结构如下:

{ 
  "name" : "Bob",
  "address" : {
     "street" : "123 Baker St"
  }
}

我可以使用以下shell命令更新所有“街道”值:

db.mycollection.update({}, {$set : {"address.street" : "124 Baker St"}}, {multi: true});

但在我的情况下,结构不是那么简单,那里有那些UUID,我想更新所有。结构更像是这样:

{
  "name": "Bob",
  "addresses" : {
     "0934029572035702834234092834" : {
         "street" : "123 Baker St"
      },
     "0904958304959879873876862378" : {
         "street" : "123 Baker St"
      }
   }
}

行<在现实世界中,你不希望改变那些地址是一个很好的例子b / c,但想想我做的那一刻。如何让所有文档更改嵌套“地址”对象中的所有“街道”值,而不必通过OID进行OID操作?

1 个答案:

答案 0 :(得分:-1)

我想你知道UUID:P它不是一个数组,而是嵌套的文档结构,它来自更新命令,如:

db.mycollection.update({}, {$set : {"addresses.0934029572035702834234092834.street" : "124 Baker St"}}, {multi: true});