Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在MongoDB中,如何更新文档中对象中的数组_Arrays_Mongodb_Object_Nested_Mongodb Query - Fatal编程技术网

Arrays 在MongoDB中,如何更新文档中对象中的数组

Arrays 在MongoDB中,如何更新文档中对象中的数组,arrays,mongodb,object,nested,mongodb-query,Arrays,Mongodb,Object,Nested,Mongodb Query,我的文档在MongoDB中看起来像这样: { "_id": { "$oid": "6099d057b769cc513025fd54" }, "key_name": "I_CAN_MATCH", "object_1": { "sub_object_array_1": [{

我的文档在MongoDB中看起来像这样:

  {
    "_id": {
        "$oid": "6099d057b769cc513025fd54"
    },
    "key_name": "I_CAN_MATCH",
    "object_1": {
        "sub_object_array_1": [{
            "a": "TZNNI",
            "b": "R"
        }],
        "sub_object_array_2": [{
            "c": "SDLYA",
            "d": "N"
        }, {
            "c": "KTSMQ",
            "d": "N"
        }],
        "sub_object_array_3": [{
            "e": "KYCT0",
            "f": "F"
        }, {
            "e": "KYCT1",
            "f": "N"
        }, {
            "e": "KYCT2",
            "f": "F"
        }, {
            "e": "KYCT3",
            "f": "E"
        }],
    },
    "object_2": {
      "sub_object_4": { "and": "so on ..." }
    },
    "object_array_1": [{
            "g": "KYCT0",
            "h": "F"
        }, {
            "g": "KYCT1",
            "h": "N"
        }, {
            "g": "KYCT2",
            "h": "F"
        }, {
            "g": "KYCT3",
            "h": "E"
        }]
  }
我的问题是如何更新数组子对象\U数组3其中f=“f”到f=“U”

以下内容不适用于我:

  await db_model.updateMany( 
    { key_name: "I_CAN_MATCH" },
    { $set: { "object_1.sub_object_array_3.$[array_element].f": "U" } },
    { arrayFilters: [ { "array_element.f": "F" } ] } );
但是下面的例子确实如此!因此,我了解在这种情况下语法是如何工作的

  await db_model.updateMany( 
    { key_name: "I_CAN_MATCH" },
    { $set: { "object_array_1.$[array_element].h": "U" } },
    { arrayFilters: [ { "array_element.h": "F" } ] } );
我只是不知道当数组首先位于对象内部时,$set命令缺少什么

我已经搜索过了,但是我使用的每个搜索词都指向数组中的数组,这里不是这样。 有人能帮我吗

提前谢谢

错误-

错误-


请删除不相关的字段。我不确定我是否理解您的意思。请删除不相关的字段。我不确定我是否理解您的意思。如果您注意到在我上面的文档中,SUB_OBJECT_ARRAY_3或任何其他元素没有带“\u ID”的元素。那是踢球的人!arrayFilters语句似乎仅适用于CoreMongoosArrays。一旦我输入了“_ID”(通过键入它),上面的你,或者我的那个,就开始工作了!所以我们都很好。谢谢好的,如果您注意到在我上面的文档中,SUB_OBJECT_ARRAY_3或其他任何元素都没有带“_ID”的元素。那是踢球的人!arrayFilters语句似乎仅适用于CoreMongoosArrays。一旦我输入了“_ID”(通过键入它),上面的你,或者我的那个,就开始工作了!所以我们都很好。谢谢
fail to run update: multiple write errors: [{write errors: [{Error parsing array filter :: caused by :: The top-level field name must be an alphanumeric string beginning with a lowercase letter, found 'array_element'}]}, {<nil>}]
db.collection.update({
  key_name: "I_CAN_MATCH"
},
{
  $set: {
    "object_1.sub_object_array_3.$[arrayElement].f": "U"
  }
},
{
  arrayFilters: [
    { "arrayElement.f": "F" }
  ]
})