【问题标题】:mongodb update single object in arraymongodb更新数组中的单个对象
【发布时间】: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
}

【问题讨论】:

    标签: mongodb express mongoose nosql mongodb-query


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多