mongodb更新数组中的单个对象

mongodb更新数组中的单个对象,mongodb,express,mongoose,nosql,mongodb-query,Mongodb,Express,Mongoose,Nosql,Mongodb Query,如何根据规则更新对象数组中的单个对象查询是,对象必须在我读取的输入为translation_key==的文档中,并且对象必须具有相同的语言(id),否则我必须创建新对象。(猫鼬,猫鼬) 需要语言和uniueq翻译 { "_id" : ObjectId("5bfd5324725fb12bc4863cd8"), "deleted" : false, "deleted_at" : null, "noAuth" : false, "hidden" : false,

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

需要语言和uniueq翻译

{
    "_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
}
Model.findOneAndUpdate(
            {
              _id: "document_id",
              "translation.language": "languageId",
            },
            {
              $set: {
                "translation.$.text: "text",
                "translation.$.active": "status",
                "translation.$.system.android" : true
            },
            { new: true, upsert: true, }
          )
          .lean();