Конвертировать дату в метку времени mongodb - PullRequest
0 голосов
/ 08 декабря 2018

У меня проблема с датой в MongoDB.Когда я создаю сообщение, я получаю дату с Date.now().Когда я проверяю БД, она сохраняется следующим образом: ISODate("2018-12-08T09:40:38.623+0000").

Если я делаю обычный запрос GraphQL, я получаю в результате: "created_at": "1544262038623".В моей схеме запрос определен как created_at: String. Вопрос № 1: Как мне сделать запрос, чтобы показать мне дату, а не отметку времени с начала эпохи?

Вопрос № 2: Я хочу получить отметку временисделать какой-то совокупный расчет.Но там всегда в формате даты, и я не могу получить метку времени, независимо от того, что я делаю.Я пробовал: $ toDecimal, new Date ("$ creation_at") и другие вещи.Как я могу это сделать?Мне нужны миллисекунды с начала эпохи, как в запросе выше (1544262038623).

Дополнительная информация: Работа с мангустами и Аполлоном. MongoDB - млаб.

Post.aggregate([
  { $match: { author_id: "uRKNnDZIv" }},
  { $addFields: { 
    timestamp: "$created_at"
  }
])

1 Ответ

0 голосов
/ 08 декабря 2018

Если вы хотите преобразовать дату в метку времени, тогда вы можете использовать $toLong агрегирование

Post.aggregate([
  { "$match": { "author_id": "uRKNnDZIv" }},
  { "$addFields": { 
    "timestamp": { "$toLong": "$created_at" }
  }}
])

И если вы хотите конвертировать метку времени в дату, тогдаВы можете использовать $toDate агрегирование

Post.aggregate([
  { "$match": { "author_id": "uRKNnDZIv" }},
  { "$addFields": { 
    "timestamp": { "$toDate": "$created_at" }
  }}
])
...