Для обновления каждого ключа объектов в массиве в 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. Надеюсь, это поможет вам в вашем проекте!