最近在项目中使用了mogodb,第一次用,先在菜鸟教程上熟悉了基本的crud操作了,这些可以用
mongoTemplate这个模板给的对应方法如下:
// @Test
// public void insert() {
// try {
//parm1 插入的实体类对象 parm2 集合名字
// mongoService.insertOne(new User("dxy","123"), "dxy");
// } catch ( Exception e){
// e.printStackTrace();
// System.out.println("添加失败");
// }
// }
// @Test
// public void delete() {
// try {
// //注意is中参数的数据类型必须和数据库一致
// Query query = Query.query(Criteria.where("age").is(123061).and("dataStatus").is(0));
// long delteNum = this.mongoTemplate.remove(query, collectionName).getDeletedCount();
// System.out.println("删除的记录数目"+ delteNum);
// } catch ( Exception e){
// e.printStackTrace();
// System.out.println("删除失败");
// }
// }
// @Test
// public void update(){
// //更新条件
// Query query = Query.query(Criteria.where("userId").is("ccc").and("age").is("888"));
// Update update = new Update();
// //set 的值
// update.set("age", "777");
// update.set("name", "wrr");
// update.set("email", "[email protected]");
// //只修改第一个
// // long modifyNum = this.mongoTemplate.updateFirst(query, update, collectionName).getMatchedCount();
// //修改所有
// long modifyNum = this.mongoTemplate.updateMulti(query, update, collectionName).getMatchedCount();
// System.out.println("修改的记录数目:" + modifyNum);
// }
//
@Test
public void query() {
//query all 不带条件的
Query query = new Query();
//query on conditional
//Query query = Query.query(Criteria.where("orign").is("form"));
List lists = this.mongoTemplate.find(query, ConsultRequestDto.class, "midelsystem");
System.out.println("====size======="+ lists.size());
for (int i = 0 ; i < lists.size(); i++){
System.out.println(lists.get(i).getContent());
}
}
那么如何匹配在Navicat中执行如下的MongoDB的sql如下:
统计数据库中某段时间某种类型,某个值不为空,某个组里边前3的按照_id降序排列的结果:
在serviceimpl中对应的java代码如下:
AggregationResults countNumTop3(Date starttime, Date endtime, String groupstr ) {
Criteria criteria = Criteria.where("content").ne("").ne(null);
criteria.andOperator(
Criteria.where("rqsttime").gte(starttime),
Criteria.where("rqsttime").lte(endtime)); //时间条件
Sort sort = new Sort(Direction.DESC, "_id"); //排序 按照_id减序
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(criteria), //加入match条件
Aggregation.group(groupstr).count().as("num"), //分组字段
Aggregation.sort(sort),
Aggregation.limit(3) // 限制前几条的
);
//parm1 集合名字 parm2 实体类
AggregationResults outputType = mongoTemplate.aggregate(agg,
ColNameConstants.BASIC_COLLECTION_NAME, MyEnty.class);
return outputType;
}
暂时就分享这些了,后续有使用问题会继续贴在这里。