Как обновить каждый ключ объектов в массиве в mongoDb?

Для обновления каждого ключа объектов в массиве в MongoDB мы можем использовать оператор $set и оператор $[] сочетании с циклом forEach в запросе обновления. Давайте рассмотрим подробную процедуру:

1. Найдите документ, который содержит массив объектов, которые нужно обновить.

   db.collection.find(...)

2. Используйте функцию forEach, чтобы перебрать каждый объект в массиве.

   db.collection.find(...).forEach(function(doc) {
     // Ваш код будет здесь
   })

3. Внутри цикла forEach обновите каждый ключ объекта, используя оператор $set и оператор $[].

   db.collection.find(...).forEach(function(doc) {
     for (var key in doc.array) {
       db.collection.update(
         { _id: doc._id },
         { $set: { "array.$[elem]." + key: doc.array[key] } },
         { arrayFilters: [ { "elem._id": doc.array[key]._id } ] }
       );
     }
   })

В этом коде мы используем оператор $[elem], чтобы указать, что мы хотим обновить объект, удовлетворяющий условию arrayFilters. Мы также используем ключ объекта key для динамического обращения к ключам массива.

Обратите внимание, что в запросе обновления мы также передаем массив фильтров arrayFilters, чтобы указать, что мы хотим обновить только те объекты, которые удовлетворяют фильтру. В данном случае мы фильтруем объекты с использованием _id каждого объекта.

4. После выполнения запроса обновления вы должны увидеть, что каждый ключ в массиве объектов был обновлен в соответствии с вашими требованиями.

Это самый развернутый ответ на ваш вопрос о том, как обновить каждый ключ объектов в массиве в MongoDB. Надеюсь, это поможет вам в вашем проекте!