Mongodb怎样更新像这样的文档,数组里面有子文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb怎样更新像这样的文档,数组里面有子文档相关的知识,希望对你有一定的参考价值。

参考技术A 更新数组字段使用$push关键词
提供参考代码:使用node.js
var filter;
if (paramtype === 1)
filter = helpapiuuid: helpapiuuid, "requests.paramid": opts.paramid;
else
filter = helpapiuuid: helpapiuuid, "responses.paramid": opts.paramid;

var update;
if (paramtype === 1)
update =
$set:
"requests.$.param": opts.param,
"requests.$.type": opts.desc,
"requests.$.desc": opts.desc,
"requests.$.default": opts.default

;
else
update =
$set:
"responses.$.param": opts.param,
"responses.$.type": opts.desc,
"responses.$.desc": opts.desc,
"responses.$.default": opts.default

;


return publicdb.collection(colname).findOneAndUpdateAsync(filter, update, upsert: false)本回答被提问者和网友采纳

MongoDB 更新数组条目

【中文标题】MongoDB 更新数组条目【英文标题】:MongoDB update arrays entry 【发布时间】:2021-12-24 22:09:56 【问题描述】:

我有一个文档要像这样的 Mongodb 更新对象数组:

    
    "myArray": [
            
              "Key1": "string",
              "key2": 
                "entry": "aaa"
              
            ,
            
              "Key1": "string",
              "key2": 
                "entry": "bbb"
              
            
          ]
    

我想修改 myArray 的每个对象中的 key2 字段。预期的结果应该是:

    
    "myArray": [
            
              "Key1": "string",
              "key2Modified":"aaa"
            ,
            
              "Key1": "string",
              "key2Modified":"bbb"
            
          ]
    

有什么帮助吗?

【问题讨论】:

查看array update operators 和arrayFilters。 【参考方案1】:

$set 中使用$map

db.collection.update(,
[
  
    $set: 
      "myArray": 
        $map: 
          input: "$myArray",
          as: "a",
          in: 
            Key1: "$$a.Key1",
            key2Modified: "$$a.key2.entry"
          
        
      
    
  
])

mongoplayground

【讨论】:

以上是关于Mongodb怎样更新像这样的文档,数组里面有子文档的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 更新数组条目

使用 Spring Data MongodB 更新嵌入式 mongodb 文档中的数组字段?

MongoDB 中嵌入文档的数组元素的并发更新

PHP的MongoDB driver怎样像mysql一样count统计文档条数

MongoDB更新数组元素(带有键的文档)如果存在,否则推送

在子文档 MongoDB 中检索数组