没长正的技术专栏 勤动手、多思考

MongoDB实战

2014-01-10

阅读:

2021-07-14

MongoDB 实战

1.说明

项目实际开发过程中常见用法积累。

1.1 查询

  • 基于查询引擎查询:

    -- 按条件查询条数 (ssp_log 集合中 type为 ssp .....)
      
    db.getCollection("ssp_log").find({"type":"ssp","action":2,"table":"premises","time":{$lte:1617379200},"data":{$regex:".*?\\【.*"}}).count()
      
    -- 模糊查询  LIKE
    db.getCollection("ssp_log").find({premises_name:{$regex:"茂业"}})
    
  • Java 应用中查询

    Query query = new Query();
    //要查询的字段
    query.fields().include("primary_id").include("data");
    Criteria criteria = Criteria.where("type").is("ssp")
        //注意数据类型 "2" 查询不出来
        .and("action").is(2)
        .and("table").is("premises")
        //查询时间
        .and("time").gte(startTime)
        .and("data").regex(Pattern.compile(".*?\\【.*", Pattern.CASE_INSENSITIVE));
    query.addCriteria(criteria);
      
    //分页查询 (底层是通过skip 、limit来分页的)
    Pageable pageable = PageRequest.of(page, size);
    log.info("-------------->MongoDB getPage start");
    List<SspLog> objs = this.mongoTemplate.find(query.with(pageable), SspLog.class, "xx_log");
      
    Mongo mg = new Mongo();
    DB db = mg.getDB("data");
    DBCollection coll = db.getCollection("xx_log");
    DBCursor limit = coll.find().skip((pageNum-1)*pageSize).sort(new BasicDBObject()).limit(pageSize);
    

1.2 生成脚本

db.getCollection('data_definition').find({"key":{$regex:"ncc_"}}).forEach(function(item){
    print( 'db.getCollection("data_definition").insert(' + tojson(item) + ');' );
});

-- 执行时如果出现 not master ,说明是从库,没有写权限;直接从换主库执行。

参考

菜鸟教程


欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


上一篇 MongoDB基础

下一篇 DB性能简析

Comments

Content