最近在項目中使用了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<ConsultRequestDto> 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<MyEnty> 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<MyEnty> outputType = mongoTemplate.aggregate(agg,
ColNameConstants.BASIC_COLLECTION_NAME, MyEnty.class);
return outputType;
}
暫時就分享這些了,後續有使用問題會繼續貼在這裏。