Mongodb 时间倒序查询和模糊条件查询总条数

根据时间倒序查询:因为mongo中的_id包含有时间信息,_id倒序就是时间顺序,即可简单时间倒序查询。也可以根据某一时间字段来查询,如下:
命令:

db.getCollection('data_collect').find({}).sort({_id: -1}).limit(5)
db.getCollection('data_collect').find({}).sort({uploadTime: -1}).limit(5)

在这里插入图片描述
java: 倒序分页查询

        MongoCollection<Document> readCollect = mongoTemplate.getCollection(collectionName);
        JSONArray jsonArray=new JSONArray();
        Block<Document> processBlock = new Block<Document>() {
            @Override
            public void apply(final Document document) {
                jsonArray.add(JSON.parse(document.toJson()));
            }
        };
        // 倒序查询:可根据mongoId来
//        Bson sort= Filters.eq("_id",-1);
        Bson sort = Filters.eq("uploadTime",-1);
        log.info("jsonSql: " + jsonSql);
        readCollect.find(Document.parse(jsonSql)).sort(sort).skip(skip).limit(limit).forEach(processBlock);
        return new ResponseEntity<>(jsonArray, HttpStatus.OK);
    }

根据模糊条件查询总条数
聚合函数:查询IMEI中包含8659,并且userSetkey 为02的记录总条数

db.getCollection('data_collect').aggregate([
      { $match: { $and: [  { IMEI: {$regex:/8695/}  }, {userSetkey :"02"  }  ] }}
    ,{ $group: { _id: null, count: { $sum: 1 } } }
])

在这里插入图片描述
java:

// 不包含模糊查询的
//        MongoCollection<Document> readCollect = mongoTemplate.getCollection("data_collect");
//        Bson filter = Filters.eq("reportMethod","autoReport");
//        Bson filter1 = Filters.eq("IMEI",IMEI);
//        Bson filter2 = Filters.eq("userSetkey",userSetkey);
//        Bson and = Filters.and(filter);
//        if ("".equals(IMEI) && !"".equals(userSetkey)){
//             and = Filters.and(filter, filter2);
//        }
//        if ("".equals(userSetkey) && !"".equals(IMEI)){
//             and = Filters.and(filter, filter1);
//        }
//        if("".equals(IMEI) && "".equals(userSetkey)){
//            and = Filters.and(filter);
//        }
//        if(!"".equals(IMEI) & !"".equals(userSetkey)){
//             and = Filters.and(filter, filter1, filter2);
//        }
//        log.info("and: " + and);
//        long count = readCollect.countDocuments(and);
//        return new ResponseEntity<>(count, HttpStatus.OK);
    //     包含模糊查询的:用正则表达式可以不需要进行非空判断
        Query query = new Query(Criteria.where("userSetkey").regex(userSetkey).and("IMEI").regex(IMEI));
        log.info("query: " + query);
        long count = mongoTemplate.count(query, "data_collect");
        return new ResponseEntity<>(count, HttpStatus.OK);

在这里插入图片描述
参考:mongo官网文档菜鸟教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值