Измените строку при обновлении, чтобы поместить несколько символов "/" в центр MongoDb. - PullRequest
1 голос
/ 11 апреля 2020

Проблема : у меня есть mongoDB, которая использует csv-архив с полем

"metrictimestamp" , но поле заполнено целое число , например:

20180201025934, мне нужен способ поместить несколько цифр "/" между числами, чтобы я мог преобразовать

строку в тип даты, что-то вроде: "2018/02/01 02:59:34"

1 Ответ

0 голосов
/ 11 апреля 2020

В MongoDB v 4.2 или выше вы можете запустить конвейер агрегации в обновлениях. Таким образом, мы можем получить $ substr с заданным string и объединить все эти подстроки и записать результат в то же поле, попробуйте запрос ниже:

db.collection.update( /** Instead of .update() you can use .updateMany() */
  {},
  [
    { $addFields :{ metrictimestamp :{ $toString : '$metrictimestamp' } } },
    {
      $addFields: {
        metrictimestamp: {
          $concat: [
            { $substr: ["$metrictimestamp", 0, 4] },
            "/",
            { $substr: ["$metrictimestamp", 4, 2] },
            "/",
            { $substr: ["$metrictimestamp", 6, 2] },
            " ",
            { $substr: ["$metrictimestamp", 8, 2] },
            ":",
            { $substr: ["$metrictimestamp", 10, 2] },
            ":",
            { $substr: ["$metrictimestamp", 12, -1] },
          ],
        },
      },
    },
  ],{ multi : true }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...