mongDB 日期字符串范围查询
mongDB 日期字符串范围查询
初次使用mongdb就遇到了一个难题,如何进行mongdb的日期范围查询,比这多次调用接口,发现该日期查询到的结果为空,于是笔者就多次debug查询,发现该日期已经被存为字符串格式。
范围查询命令
mongdb 范围查询采用的命令可以是如何命令
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
java中调用可以写成如何下格式 (正确 格式)
String datex []=date.split("/");
Query query;
query = Query.query(Criteria.where("date").gte(datex[0]).lte(datex[1]).and("coverId").is(uid).
and("isRead").is(isRead)).with(sort);
List<Comment> comments = mongoTemplate.find(query, Comment.class);
采坑开始
第一次入坑开始
String datex []=date.split("/");
Query query;
query = Query.query(Criteria.where(“date”).gte(datex[0]).and(“date”)lte(datex[1]).and(“coverId”).is(uid).
and(“isRead”).is(isRead)).with(sort);
List comments = mongoTemplate.find(query, Comment.class);
这样的代码会直接报错(错误示范)
第二次入坑之路
经过上次的入坑以后,我学聪明了,采用navcat for mongdb 直接先写nosql,sql如下
db.getCollection(“Comment”).find({ “date” : { “
g
t
e
"
:
"
2019
−
6
−
7
"
,
"
gte" :"2019-6-7", "
gte":"2019−6−7","lte” :“2019-11-7” } })
看着上面的sql,是否都觉得没问题,但是就是无法查出数据(数据库中2019年6月七号是有数据的),细心点的小伙伴估计已经看出来了问题出在哪里。
脱坑之路
笔者仔细查看了数据库中的日期,
取了两个日期进行查询,nosql如下所示
db.getCollection(“Comment”).find({ “date” : { “
g
t
e
"
:
"
2017
−
04
−
20
"
,
"
gte" :"2017-04-20", "
gte":"2017−04−20","lte” :“2019-11-09” } })
与上面的一对比,发现不同了吧,对,是笔者传入的数据格式有问题,没有按照日期标准格式来进行查询,所以没法查询到数据,最后显示为空。因为传入的字符串长度不够,mongdb直接判断没有数据。最后,建议各位小伙伴不要采用字符串存储日期,否者测试时不规范会出现我这里的问题。