В MongoDB для выполнения итераций над набором документов можно использовать оператор $forEach
внутри операции агрегации. Оператор $forEach
позволяет выполнить произвольное JavaScript-выражение для каждого документа во входном наборе.
Вот пример, как правильно использовать $forEach
в MongoDB:
db.collection.aggregate([ // Добавляем поле `newField` с помощью оператора `$addFields` { $addFields: { newField: null // Инициализируем новое поле значением `null` } }, // Выполняем операцию `$forEach` для каждого документа { $project: { _id: 0, originalField: 1, newField: { $forEach: { input: "$originalField", // Входной массив для итерации as: "item", // Псевдоним для текущего элемента in: { $concat: ["$newField", "$$item"] // Выполняем какое-либо действие, в данном случае конкатенация } } } } } ])
В приведенном примере мы используем операцию агрегации $addFields
, чтобы добавить поле newField
в каждый документ в коллекции. Затем мы используем операцию $project
, чтобы проектировать только выбранные поля, включая originalField
и новое поле newField
.
Внутри операции $project
мы выполняем операцию $forEach
на поле originalField
. Мы задаем входной массив для итерации с помощью $originalField
, задаем псевдоним item
для текущего элемента и выполняем указанное выражение в поле in
. В нашем случае мы используем оператор $concat
, чтобы выполнить конкатенацию значения в newField
с каждым элементом из originalField
.
Таким образом, с использованием оператора $forEach
, мы можем легко выполнить произвольное действие для каждого документа в коллекции MongoDB.