下面是我的查询
db.getCollection('ledgers').aggregate(
[
{
"$project":{
"name":1,
"generated":1
timeSpend:{
$divide :
[{
$subtract:
["$generated",new Date()]
}, 3600000
]
}
}
}
])
已生成-是保存ISO日期值的列( ISODate(“ 2001-04-11T22:12:01.249Z”))
在这里,我想通过减去当前日期来查找小时数。我还想添加一个过滤器,如果 timeSpend 大于14小时,则仅应返回那些记录。
我不想返回其timeSpend值小于14小时的整个记录
答案 0 :(得分:1)
您可以添加一个$match
阶段来过滤结果,其中timeSpend > 14
如果您的日期是过去的日期,$subtract
应该颠倒过来。
timeSpend = new Date() - $generated
[
{
"$project": {
"name": 1,
"generated": 1,
"timeSpend": {
$divide: [
{
$subtract: [
new Date(),
"$generated"
]
},
3600000
]
}
}
},
{
"$match": {
timeSpend: {
$gt: 14
}
}
}
]
尝试here