Преобразовать поле в другой тип и обновить всю коллекцию в Bulk? - PullRequest
1 голос
/ 20 марта 2020

Здесь, в моей коллекции, у меня есть поля «числовые» и «дата», сохраняемые в виде строки, но я хочу, чтобы оба они были целыми числами, как я могу это сделать. Вот моя коллекция

{
   "name": "Thyame",
   "salary": "25000",
   "dob": "1988-01-25"
}

, ожидаемый результат

{
   "name": "Thyame",
   "salary": 25000,
   "dob": ISODate("1988-01-25T00:00:00.000Z")
}

1 Ответ

1 голос
/ 20 марта 2020

Вы можете выполнить агрегирование MongoDB, чтобы изменить тип данных и переопределить всю коллекцию с помощью оператора $out.

Попробуйте это:

db.collection.aggregate([
  {
    $project: {
      name: "$name",
      salary: {
        $toInt: "$salary"
      },
      dob: {
        $dateFromString: {
          dateString: "$dob",
          format: "%Y-%m-%d"
        }
      }
    }
  }
//,{$out:"collection"}
])

MongoPlayground

Примечание: Если вы раскомментируете $out, все записи с результатом агрегации будут переопределены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...