我想使用spring数据存储库@Query注释编写mongodb查询,这是我的要求:
获取最近60分钟内添加的所有Vins,它们仍然处于活动状态
“ keepAlive”是特定VIN处于活动状态的时间,以毫秒为单位。当在数据库中输入记录时,“ keepAlive”可以设置为30分钟,60分钟等
示例数据:
{ vin: "ANBCDERGGGHHGUTY", keepAlive: "3600000", dateAdded: "2019-12-16T16:45:29-05:00" } { vin: "T5765ERGGGHHGUTX", keepAlive: "1800000", dateAdded: "2019-11-14T13:41:29-03:00" }
这是我的课程:
public class MyEntity {
private String vin;
private long keepAlive;
private Date dateAdded;
}
我已经尝试过类似的操作,但似乎不起作用:
@Query(value = "{'keepAlive':{$lte : {$subtract: [?0, 'dateAdded']}}}")
List<MyEntity> findLatestVins(Date currentSystemDate);
任何想法我该怎么做?
db.cars.find()
:{ "vin" : 1, "keepAlive" : 3600000, "dateAdded" : "2019-12-17T15:00:29+01:00" }
{ "vin" : 2, "keepAlive" : 3600000, "dateAdded" : "2019-12-17T13:00:29+01:00" }
{ "vin" : 3, "keepAlive" : 1800000, "dateAdded" : "2019-12-17T15:00:29+01:00" }
请注意,字段keepAlive
的类型为number
在
mongodb
控制台上:
db.cars.find({ $expr: { $gte: [ "$keepAlive", { $subtract: [ new Date(), {$toDate: "$dateAdded"} ] } ] } })