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();
        }

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB 是一种 NoSQL 数据库,它使用 JSON 类型的文档来存储数据。而 FreeMarker 是一种模板引擎,它可以根据模板和数据生成静态文本或者动态网页。 要实现 MongoDB + FreeMarker 的条件查询,可以按照以下步骤进行: 1. 在 MongoDB 中定义一个集合,用于存储数据。 2. 使用 MongoDBJava 驱动程序连接到数据库,并获取集合的句柄。 3. 使用 Java 代码编写查询条件,并将查询结果存储到一个 List 对象中。 4. 将 List 对象作为数据模型,将 FreeMarker 模板和数据模型合并,生成最终的输出。 下面是一个示例代码,演示了如何使用 MongoDB 和 FreeMarker 进行条件查询: ``` // 连接到 MongoDB 数据库 MongoClient mongoClient = new MongoClient("localhost", 27017); // 获取集合的句柄 MongoDatabase database = mongoClient.getDatabase("mydb"); MongoCollection<Document> collection = database.getCollection("mycollection"); // 定义查询条件 BasicDBObject query = new BasicDBObject(); query.put("name", "John"); // 执行查询,并将结果存储到 List 对象中 List<Document> results = new ArrayList<>(); FindIterable<Document> cursor = collection.find(query); for (Document doc : cursor) { results.add(doc); } // 将 List 对象作为数据模型,渲染 FreeMarker 模板 Configuration cfg = new Configuration(Configuration.VERSION_2_3_28); cfg.setDirectoryForTemplateLoading(new File("templates")); Template template = cfg.getTemplate("mytemplate.ftl"); Map<String, Object> dataModel = new HashMap<>(); dataModel.put("results", results); Writer out = new OutputStreamWriter(System.out); template.process(dataModel, out); out.flush(); ``` 在上面的代码中,我们使用BasicDBObject 类来定义查询条件。在这个示例中,我们只查询了 name 属性等于 "John" 的文档。你可以根据自己的需求修改查询条件。 最后,我们将查询结果存储到一个 List 对象中,并将它作为数据模型,渲染 FreeMarker 模板。在模板中,你可以使用 ${results} 变量来访问查询结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值