java mongodb 使用MongoCollection,BasicDBObject 条件查询

java mongodb 使用MongoCollection,BasicDBObject 条件查询

废话不说,上代码

 //链接数据库
        MongoClient mongoClient = new MongoClient( "172.26.xxx.xxx" , 27017 );

        MongoDatabase mongoDatabase =mongoClient.getDatabase("xxxx");

        MongoCollection<Document> collection = mongoDatabase.getCollection("test_logs");

        //加入查询条件
        BasicDBObject query = new BasicDBObject();
        //时间区间查询 记住如果想根据这种形式进行时间的区间查询 ,存储的时候 记得把字段存成字符串,就按yyyy-MM-dd HH:mm:ss 格式来
        query.put("times", new BasicDBObject("$gte", "2018-06-02 12:20:00").append("$lte","2018-07-04 10:02:46"));
        //模糊查询
        Pattern pattern = Pattern.compile("^.*王.*$", Pattern.CASE_INSENSITIVE);
        query.put("userName", pattern);
        //精确查询
        query.put("id", "11");
        //skip 是分页查询,从第0条开始查10条数据。 Sorts是排序用的。有descending 和ascending
        MongoCursor<Document> cursor = collection.find(query).sort(Sorts.orderBy(Sorts.descending("times"))).skip(0).limit(10).iterator();//
        int unm=0;
        try {
            while (cursor.hasNext()) {
                UserBehaviorLogs userBehaviorLogs = new UserBehaviorLogs();
                //查询出的结果转换成jsonObject,然后进行封装或者直接返回给前端处理。我这是封装成对象了
                JSONObject jsonObject = JSONObject.parseObject( cursor.next().toJson().toString());
                userBehaviorLogs.setId(jsonObject.getString("id"));//id
                userBehaviorLogs.setUserId(jsonObject.getString("userId"));//用户id
                userBehaviorLogs.setUserName(jsonObject.getString("userName"));//用户名称
                userBehaviorLogs.setParams(jsonObject.getString("params"));//参数
                userBehaviorLogs.setException(jsonObject.getString("Exception"));//异常信息
                userBehaviorLogs.setTimes(jsonObject.getString("times")+"");//创建时间
                unm++;
                System.out.println(unm+"="+userBehaviorLogs.getTimes()+"==="+userBehaviorLogs.getId());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cursor.close();
        }

其中时间时间区间查询 被坑了一把。后来直接改成字符串格式的了(yyyy-MM-dd HH:mm:ss)。

代码直接拿过去就能用。

 

 本博客是本人原创 未经允许不得转载 谢谢。

  链接地址:http://www.cnblogs.com/richard-ju/p/L2018006.html

 

转载于:https://www.cnblogs.com/richard-ju/p/L2018006.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101577.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java面试抽集[通俗易懂]

    Java面试抽集[通俗易懂]Java面试抽集

    2022年4月22日
    35
  • jediscluster 关闭 连接池_Redis——JedisCluster

    jediscluster 关闭 连接池_Redis——JedisClustersmart客户端实现原理(追求性能,不使用代理)从集群中选一个可运行节点,使用clusterslots初始化槽和节点映射。将clusterslots的结果映射到本地,为每个节点创建JedisPool。执行命令执行命令执行命令的过程简单来说,就是通过CRC16计算出key的槽,根据节点映射直接访问目标节点,如果出错,就随机挑选一个节点,通过moved重定向访问目标节点,并且重新初始化节点映射。好…

    2022年10月10日
    2
  • this指针的介绍和用法

    this指针的介绍和用法参考书籍,孙鑫视频教学,百度等。—下文举的例子是错误的,楼主若有空会对此进行修改。记录时间:2019-3-4this指针的介绍this指针是面向对象程序设计的一项概念,在C++中,它表示当前运行的对象。在实现对象的方法时,this指针来获得该对象自身的引用。正如classFamily类,创建了Family类的两个对象,即Chen1和Chen2。(1)假如Family类是”…

    2022年5月17日
    47
  • miui12免费网络电话没了_小米9电信卡未注册上volte

    miui12免费网络电话没了_小米9电信卡未注册上volteMinaMEIDActivator是由Minacriss开发的新工具。可以激活所有MEID三网的信号恢复,并且支持打电话、短信、4G流量上网。支持iPhone5sX直接所有型号,支持iOS12.5.2iOS14.4.2。MEID三网指:不小心忘记ID密码,而且已经刷机并且是激活锁界面的现在也可解信号。更新日志:2021.5.111,修复错误2,自动屏蔽系统更新、还原手机功能。使用方法:1,对设备进行越狱,使用checkra1n越狱或者U盘越狱工具2,找正规授权经销商对设备序列号进行授权3

    2022年9月2日
    4
  • 【转载】反向代理为何叫反向代理?

    【转载】反向代理为何叫反向代理?

    2021年11月20日
    42
  • 执行游戏时出现0xc000007b错误的解决方法

    执行游戏时出现0xc000007b错误的解决方法

    2021年12月10日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号