配置
配置yml信息
Spring:
data:
mongodb:
uri: mongodb://localhost/tj
设置pojo类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order implements Serializable {
private String id; //订单编号
private String status;//订单状态
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS", timezone = "GTM+8")//转时间格式
private Date orderTime;//下单时间
private String shipperAdress;//发货人地址
private String shipperPhone;//发货人电话
private Date ShipTime;//发货时间
private String receiver; //发货人
private String receiverAdress; //收货人地址
private String receiverPhone; //收货人电话
private List<Logistics> logistics; //物流信息
}
简单使用mongoTemplate
1、 插入语句
Order order = new Order();
order.setId(IdUtil.getSnowflake(1,1).nextIdStr());
order.setStatus("未下单");
order.setShipperAdress("北京");
order.setReceiver("zh");
order.setOrderTime(new Date());
order.setShipTime(new Date());
mongoTemplate.insert(order,"order");
2、单条件查询
//根据单条件查询查询
void SeeByStatus(){
Query query = Query.query(Criteria.where("status").is("已下单"));
List<Order> orders= mongoTemplate.find(query,Order.class,"order");
System.out.println("mongoDB按条件ID查询数据成功,集合为col,文档为:");
orders.forEach(System.out::println);
}
3、 多条件查询
//根据多条件查询查询
@Test
void SeeByConditions(){
Query query = Query.query(new Criteria()
.orOperator( Criteria.where("status").is("已下单"),
Criteria.where("id").is("1407151473833414656") )) ;
List<Order> orders = mongoTemplate.find(query,Order.class);
}
使用Aggregation 管道进行数据处理
1、 单管道的使用
// 使用管道 Aggregation 单条件 进行查询
//group 1 、以status 为group by获取name的第一个值first()
// match 2、管道过滤
@Test
void UseAggregation(){
//以status 为group by获取name的第一个值first()
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.group("status").first("_id").as("status2"));
List<String> tj = mongoTemplate.aggregate(aggregation, "order", String.class).getMappedResults() ;
//tj.forEach(System.out::println);
Aggregation aggregation2 = Aggregation.newAggregation(
Aggregation.match(Criteria.where("shipperAdress ").is("北京")));
}
2、多个管道的使用
// 使用管道 Aggregation 多条件 进行查询
@Test
void UseAggregation2(){
List<AggregationOperation> aggregations = new ArrayList<>();
aggregations.add(Aggregation.match(Criteria.where("shipperAdress").is("北京")));
List<Order> order1 = mongoTemplate.aggregate(Aggregation.newAggregation(aggregations)
, "order", Order.class).getMappedResults();
aggregations.add( Aggregation.group("status").first("shipperAdress").as("shipperAdress"));
List<String> tj = mongoTemplate.aggregate(Aggregation.newAggregation(aggregations)
, "order", String.class).getMappedResults();
tj.forEach(System.out::println);
}
总结
增删改查用法并不完全,如果有需要就去大哥博客上去借鉴Aggregation的用法大全