mongodb更新数组中的单个对象

Posted

技术标签:

【中文标题】mongodb更新数组中的单个对象【英文标题】:mongodb update single object in array 【发布时间】:2019-04-29 18:33:22 【问题描述】:

如何通过规则查询更新对象数组中的单个对象是该对象必须在具有 translation_key == 作为我读取的输入的文档中,并且对象必须具有相同的语言(id),否则我必须创建新对象。 (mongodb,猫鼬)

语言是必需的,并且在翻译中是唯一的


    "_id" : ObjectId("5bfd5324725fb12bc4863cd8"),
    "deleted" : false,
    "deleted_at" : null,
    "noAuth" : false,
    "hidden" : false,
    "translation_key" : "Standard",
    "translation_type" : "text",
    "translation" : [ 
        
            "system" : 
                "android" : false,
                "ios" : false,
                "web" : false,
                "api" : false
            ,
            "language" : ObjectId("5bf52e06edb9902e2113d8b3"),
            "text":'',
            "active" : false,
            "prepared_string" : false,
            "_id" : ObjectId("5bfd910c2998d929644abd90"),
            "params" : []
        , 
        
            "system" : 
                "android" : false,
                "ios" : false,
                "web" : true,
                "api" : false
            ,
            "active" : false,
            "prepared_string" : false,
            "_id" : ObjectId("5bfdb5d22998d929644ac2af"),
            "language" : ObjectId("5bf52e06edb9902e6471d8c1"),
            "text" : "Standard",
            "app_version" : "2.0",
            "params" : []
        
    ],
    "create_date" : ISODate("2018-11-27T14:22:28.635Z"),
    "update_date" : ISODate("2018-11-27T14:22:28.635Z"),
    "__v" : 3

【问题讨论】:

【参考方案1】:
Model.findOneAndUpdate(
            
              _id: "document_id",
              "translation.language": "languageId",
            ,
            
              $set: 
                "translation.$.text: "text",
                "translation.$.active": "status",
                "translation.$.system.android" : true
            ,
             new: true, upsert: true, 
          )
          .lean();

【讨论】:

以上是关于mongodb更新数组中的单个对象的主要内容,如果未能解决你的问题,请参考以下文章

更新 mongoDB 中的单个项目,同时保持其余项目相同

如何使用 MongoDB 在数组中的对象中更新数组中的对象中的文档?

MongoDB - 基于嵌套数组的字段值更新数组对象中的字段

如何更新数组NodeJS,MongoDB中的特定对象

子数组中的 MongoDB 更新查询

如何使用mongodb中的对象更新数组?