Как создать массив из объектов с дефолтными значениями?

Для создания массива из объектов с дефолтными значениями в MongoDB можно использовать Aggregation Pipeline операторы, такие как $map и $mergeObjects.

Давайте предположим, что нам нужно создать массив объектов, каждый из которых будет иметь дефолтные значения для полей "name" и "age". Мы можем использовать следующий пример кода:

db.collection.aggregate([
  {
    $project: {
      defaultValues: {
        $map: {
          input: [1, 2, 3, 4, 5], // Массив значений, которые будут использованы для создания объектов
          as: "value",
          in: {
            $mergeObjects: [
              {
                name: "Default Name", // Дефолтное значение для поля "name"
                age: 18, // Дефолтное значение для поля "age"
              },
              {
                value: "$$value" // Значение из массива будет добавлено в каждый объект
              }
            ]
          }
        }
      }
    }
  }
])

В этом примере мы используем оператор $map, чтобы пройти по массиву значений [1, 2, 3, 4, 5]. Для каждого значения оператор $mergeObjects объединяет значения полей "name" и "age" с дефолтными значениями и добавляет значение из массива в поле "value".

Результатом выполнения данного агрегационного запроса будет объект с полем "defaultValues", содержащим массив из пяти объектов с дефолтными значениями для полей "name" и "age", и каждый объект будет содержать значение из массива в поле "value".

Пример результата:

{
  "defaultValues": [
    {
      "name": "Default Name",
      "age": 18,
      "value": 1
    },
    {
      "name": "Default Name",
      "age": 18,
      "value": 2
    },
    {
      "name": "Default Name",
      "age": 18,
      "value": 3
    },
    {
      "name": "Default Name",
      "age": 18,
      "value": 4
    },
    {
      "name": "Default Name",
      "age": 18,
      "value": 5
    }
  ]
}

Таким образом, вы создали массив из объектов с дефолтными значениями в MongoDB с использованием Aggregation Pipeline операторов.