关于Mongodb Compass工具使用聚合函数的操作

1、MongodbCompass的下载安装和数据导入

 首先大家进入mongodb的官网,选择Compass。客户端链接工具有很多,还是推荐大家使用官网的Compass

进入下载页面选择想要下载的版本,然后打开下载的exe链接本地mongodb就可以。

注意:不同版本的客户端可能对于安装的不同版本的mongodb在链接的时候是有兼容问题的。

2、链接客户端

我这里已经为大家安装了mongodbComapss客户端,并且建立了链接。我这里使用的是1.18.0版本的客户端,因为我linux安装的mongodb版本也比较低。

输入hostname和port就可以点击链接。

 正常建立链接后,可以看到我本地的一些在用的库。

3、导入测试数据

为了让大家有足够多的数据测试聚合函数的,我这里准备了3W条可供导入的bson数据。

我把数据传到了自己创建的data目录下

通过linux指令导入数据(/bin 目录下执行): ./mongorestore -d test --dir /usr/local/mongodb/data/orders.bson

-d 后面是指定要导入的库(没有的话会新建)

--dir  后面跟的是数据文件存在的位置

导入完成后,我们通过compass页面查看下数据是否导入且正常展示。

4、compass中聚合函数(Aggregations)页面的操作 

导入数据中涉及的字段属性地区、商品、订单等信息:

 /**
     * 省
     */
    private String province;
    /**
     * 店铺名称
     */
    private String shopName;
    /**
     * 电话号码
     */
    private String phone;
    /**
     * 下单日期
     */
    private Date orderDate;
    /**
     * 订单状态
     */
    private String status;
    /**
     * 运单号码
     */
    private String waybillNo;
    /**
     * 总运费
     */
    private Integer shippingFee;

    /**
     * 总费用
     */
    private Integer total;

    private Bill bill;


public class OrderDetail {

    /**
     * ID
     */
    private Long id;
    /**
     * 商品名称
     */
    private String productName;
    /**
     * 商品编码
     */
    private String sku;
    /**
     * 购买数量
     */
    private Integer qty ;
    /**
     * 单价
     */
    private Integer price ;
    /**
     * 进货价格
     */
    private Integer cost ;
    /**
     * 库房编码--单位--包装规格....
     */
}

public class Bill {
    private String contractNo;
    private String remark;
}

 第一个需求:我们求商品的总销售额,求total字段的总和,对应函数语法:

{
  _id: null,
  total: {
    $sum: "$total"
  }
}

第二个需求:查询2020年11月1日-11月12日已完成订单总金额和订单总数

跟需求分为多步去聚合查询:

①查询日期在2020-11-01到2020-11-12之间,且订单状态为"已完成已评价"的数据

/**
 * query - The query in MQL.
 */
{
  status:"已完成已评价",
  orderDate:{
    $gte:ISODate('2020-11-01'),
    $lte:ISODate('2020-11-11')
  }
  
}

②根据第一步的条件查询出来的数据,根据总销售额和运费进行分组

/**
 * _id - The id of the group.
 * field1 - The first field name.
 */
{
  _id: null,
  total:{
    "$sum":"$total"
  },
  shippingFee:{
    "$sum":"$shippingFee"
  },
  count:{
    "$sum":1
  }
}

 

最后,对查询出来的数据,进行返回结果的投影美化,字段后面1代表显示该字段,0的时候不显示该字段。

/**
 * specifications - The fields to
 *   include or exclude.
 */
{
  result:{
    "$add":["$total","$shippingFee"]
  },
  count:1,
  _id:0
}

 以上根据两个需求场景,讲解了compass中聚合页面的使用,其他的聚合需求语法使用,大家可以据此根据官方文档验证探索。

官网链接:Aggregation Pipeline Optimization — MongoDB Manual

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值