记一次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":"201967","lte” :“2019-11-7” } })
看着上面的sql,是否都觉得没问题,但是就是无法查出数据(数据库中2019年6月七号是有数据的),细心点的小伙伴估计已经看出来了问题出在哪里。

脱坑之路

笔者仔细查看了数据库中的日期,

取了两个日期进行查询,nosql如下所示

db.getCollection(“Comment”).find({ “date” : { “ g t e " : " 2017 − 04 − 20 " , " gte" :"2017-04-20", " gte":"20170420","lte” :“2019-11-09” } })
与上面的一对比,发现不同了吧,对,是笔者传入的数据格式有问题,没有按照日期标准格式来进行查询,所以没法查询到数据,最后显示为空。因为传入的字符串长度不够,mongdb直接判断没有数据。最后,建议各位小伙伴不要采用字符串存储日期,否者测试时不规范会出现我这里的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值