在 Mongo 集合中更新数组中的一条记录

Posted

技术标签:

【中文标题】在 Mongo 集合中更新数组中的一条记录【英文标题】:Updating one single record in array inside Mongo Collection 【发布时间】:2020-12-29 02:47:05 【问题描述】:

大家好,我正在尝试添加一些字段并将现有字段更新到现有的 mongodb 文档数组。因为我是 mongo 的新手,所以我不太清楚如何操作数组内的嵌套文档。我的数组就像

    "productVersions" : [ 
    
        "productVersion" : "1.0",
        "active" : true,
        "effectiveDate" : "01/09/2020",
        "versionDescription" : "Initial version"
    , 
    
        "productVersion" : "2.0",
        "active" : true,
        "effectiveDate" : "01/09/2020",
        "versionDescription" : "Initial version"
    
]

首先我想找到正确的 productVersion,然后在该 productVersion 中更新现有字段,如果字段不存在则添加它。 下面是我想添加到 productVersion2 的一些字段,可以看出有效日期已经存在,必须更新,其余字段应该添加。

      signatureId: 123,
      signatureURL: 'www.abc.com',
      effectiveDate: "01/09/2020",
      configurationStatus: "active",
      name: "john" 

非常感谢任何帮助或想法。谢谢

【问题讨论】:

【参考方案1】:

您可以使用$ operator 来更新数组。如果该字段已存在,则更新该字段的值,如果添加了非新字段

db.collection.update(
   "productVersions.productVersion": "2.0" ,
  
    $set: 
      "productVersions.$.signatureId": 123,
      "productVersions.$.signatureURL": "www.abc.com",
      "productVersions.$.effectiveDate": "01/09/2020",
      "productVersions.$.configurationStatus": "active",
      "productVersions.$.name": "john",
    ,
  
);

【讨论】:

以上是关于在 Mongo 集合中更新数组中的一条记录的主要内容,如果未能解决你的问题,请参考以下文章

Mongo:如果孩子在同一个集合中,如何获取相关记录?

根据同一数组中另一个元素满足的条件更新 mongo 集合中数组的元素

如何从 mongo 数据库中的特定集合中删除重复记录?

在 mongo 和 upsert 中更新数组

Mongo 文档中的更新数组不起作用

防止插入Mongo集合的数组中的空值