получите все документы, в которых различается текущая метка времени и какой-то столбец со значением в наносекундах больше, какой-то интервал

#mongodb

Вопрос:

У меня есть mongodb версии 4.4.3, и я получил в какой — то коллекции существующую структуру с ts столбцом данных со значением наносекунд, например 1.6134264584976e 18 . Моя цель — получить все документы, в которых текущая отметка времени — ts > = 25 минут>
Что я нашел {$ToDate: ‘$ts’} преобразуйте мои в milisend

 db.getCollection('device_heartbeat').aggregate( [ {
   $project: {
      date: {$toDate: '$ts'}
   }
} 
]
) 
 

Результат

 "date" : Date(1613426458497597952)
 

как добавить условие в этот запрос ?

Ответ №1:

Я решил свою проблему, это запрос

 db.getCollection('device_heartbeat').aggregate([
    {$match: { $expr:  { $gt: [ { $subtract: [ {$toLong: new Date()}, { $divide: [ {$toLong: {$toDate: '$ts'}} , 1000000 ] } ] }, 1500 ] }}},
    {$project: {
        diff: { $subtract: [ {$toLong: new Date()}, { $divide: [ {$toLong: {$toDate: '$ts'}} , 1000000 ] } ] }
        }}
    ])