ı正在尝试将日期转换为毫秒
此代码有效
db.scheduler.aggregate ( [
{ "$match" : {
"payload.measurement.eventTimeMS" : { "$gt" : 1538035287000 }
} },
]
) ;
但这不起作用 为什么以下代码可能不起作用
查询结果:在0毫秒内获取0条记录
但是有很多数据都超过了毫秒
db.scheduler.aggregate ( [
{ "$match" : {
"payload.measurement.eventTimeMS" : { "$gt" : {
$let: {
vars: {
"crYear" : { $year: new Date() },
"crMonth" : { $month: new Date() }
},
in: {$subtract : [ { $dateFromParts: { 'year' : "$$crYear", 'month' : "$$crMonth", 'day': 1, 'hour' : 00 } }, new Date("1-1-1970")] }
}
} }
} },
]
) ;
答案 0 :(得分:0)
在mongodb 4.0版本中,您可以使用$toLong
输出从纪元开始的毫秒数。
类似
db.scheduler.aggregate(
{"$match":{"$expr":{"$gt":["$payload.measurement.eventTimeMS",{"$toLong":new Date()}]}}}
);
使用$let
db.scheduler.aggregate({"$match":{
"$expr":{
"$gt":[
"$payload.measurement.eventTimeMS",
{"$let":{
"vars":{"date":new Date()},
"in":{
"$subtract":[
{"$dateFromParts":{"year":"$$date","month":"$$date","day":1,"hour":0}},
new Date(0)
]
}
}}
]
}
}})