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 ,说明是从库,没有写权限;直接从换主库执行。