SpinrgBoot+MongoDB


配置

配置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的用法大全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值