Конвертировать дату ISO в метку времени UNIX mongodb - PullRequest
4 голосов
/ 25 апреля 2019

Существуют сотни потоков и операторов для получения объектов даты в строки ISO, но не может найти никаких ресурсов для выполнения этого наоборот в составе операторов агрегации mongoose / mongodb в Node.

Iу меня есть устаревшая версия mongodb 3.6, которая в настоящее время используется в производстве, и у меня есть конвейер, в котором я пытаюсь преобразовать обычный объект даты ISO из mongo в метку времени UNIX, чтобы я мог использовать его вместе с диаграммами ngx и другими диаграммами.

Я не могу использовать оператор $ toDate, $ convert или $ dateFromString, так как нужные мне опции недоступны в 3.6

Пока я пробовал варианты этого:

      $project: {
        _id: 0,
        // name: '$_id._id',
        value: '$_id.count',
        name: new Date.parse('$_id.date').getTime(),
        min: '$min',
        max: '$max'
      }

но ничего из этого не сработало, так как агрегация обрабатывается в БД и не имеет представления, что это за функция.Я посмотрел на многие операторы и попытался сначала преобразовать в строку, а затем вернуться к дате UNIX, но, похоже, у него нет ничего доступного для преобразования в метку времени javascript / unix с этой даты ISO.

1 Ответ

2 голосов
/ 27 апреля 2019

Вы можете использовать ниже агрегации

db.getCollection('sessions').aggregate([
  { "$project": {
    "timestamp": {
      "$subtract": [ "$createdAt", new Date("1970-01-01") ]
    }
  }}
])
...