Пн goose: Как обновить вложенный массив? - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в MongoDB и использую mon goose с nodejs. В настоящее время я пытаюсь обновить вложенный массив, который выглядит так:

array1: [
{
    name: "one"
    array2: [
        {
            value1: "test",
            value2: "test2"
        }
    ]
}
]

Итак, теперь я хочу обновить значение 1 в массиве 2. Как я могу этого добиться? Я использую оператор atomi c в своем коде два раза, как этот, но он не работает:

const data = await DB.findOneAndUpdate(
    {
        "array1.name": "one",
        "array1.array2.value1": "test"
    },
    {
        "$set": {
            "array1.$.array2.$.value1": "test changed"
        },
    }
);

Есть идеи, как я могу это сделать? Спасибо! :)

1 Ответ

1 голос
/ 19 июня 2020

Вы можете использовать arrayFilters для обновления вложенного массива.

  const data = await DB.findOneAndUpdate(
    {},
    {
      $set: {
        "array1.$[elem1].array2.$[elem2].value1": "test changed",
      },
    },
    {
      arrayFilters: [{ "elem1.name": "one"}, {"elem2.value1": "test"}],
    }
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...