SpringBoot整合MongoDB时ISQData类型如何传入条件。

我数据库中有这样一条数据

{
    "_id": "ce421365d7a529c229a83b20a56ed50c",
    " vin":"1101165230",
    "dataTime": ISODate("2021-07-01T09:32:38.000Z"),
    "electronicFenceAlarmFlag": true
}

我的要用时间作为查询条件之一但是怎么都查询不出来。

{"vin":"1G1BL52P7TR115520","dataTime":1625103158000,"alarmFlag":true}
                Criteria criteria = new Criteria();
                //毫秒数 1625103158000
                //就是这个条件-加上就没有数据 转换后:2021-07-01T09:32:38.000Z
                criteria.and("dataTime").is(getISO8601Timestamp(new Date(dataTime)));
               //单独用下面条件就有,加上时间条件就没有
                criteria.and("vin").is(vin);
                criteria.and("electronicFenceAlarmFlag").is(true);
                Sort sort = Sort.by(Sort.Order.desc("dataTime"));
                Query query = new Query(criteria).with(sort);
                VehicleHistoryData one = vehicleHistoryDataDao.findOne(query);

criteria.andOperator 新建一个criteria用于组装时间查询条件,然后andOperator拼起来试试看,可以百度下andOperator操作怎么使用,另外无需手动转成ISO时间格式,直接使用Date就好,MongoDB存储的时候自己会转换的

dateTime 查询条件弄错了,不用转换成long类型的Timestampe,直接用Java8 的LocalDateTime类型即可,springdata mongodb 提供了converter的,查询到时候会自动转换,你只需要确保时间是UTC时间能对上即可。