首页 > 解决方案 > 获取所有文档,其中 diff beetwen 当前时间戳和一些具有纳秒值的列的值更多一些间隔

问题描述

我有 mongodb 版本 4.4.3 并且我在一些集合中存在具有数据的结构 -ts具有纳秒值的列,例如1.6134264584976e+18. 我的目标是获取当前时间戳的所有文档 - ts>= 25min
我发现的 {$toDate: '$ts'} 将我的转换为 milisend

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

结果

"date" : Date(1613426458497597952)

如何向该查询添加条件?

标签: mongodb

解决方案


我解决了我的问题,这是查询

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 ] } ] }
        }}
    ])

推荐阅读