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
}