没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
18页
MongoDB作为一种文档数据库,其强大的聚合操作和索引机制为数据处理和查询提供了极大的灵活性和效率。聚合操作允许对数据进行复杂的转换和组合,而索引则确保高效的数据访问。本文基于对“MongoDB聚合操作,索引”文档的深入分析,探讨了聚合操作如何优化数据处理流程,以及索引原理在实际应用中如何提升性能。通过具体实例,我们将了解MongoDB聚合框架的使用方法,包括各种聚合管道阶段(如$match, $project, $group等)的运用。同时,深入探讨MongoDB索引的类型(如单键索引、复合索引、多键索引等),并分析索引的创建、管理和优化策略。此外,文章还介绍了索引对查询性能的影响,包括如何通过explain()方法分析查询和索引效率,以及覆盖查询和索引使用的最佳实践。本文旨在为开发者提供深入了解MongoDB聚合和索引的知识,助力优化数据库性能和查询效率。
资源推荐
资源详情
资源评论
1.MongoDB聚合操作
2.MongoDB聚合优化,
3.MongoDB索引原理及实战
MongoDB聚合框架是一个计算框架作用在一个或几个集合对集合中的数据进行一系列运算
将这些数据转化为期望的形式
如:现在有一组数据
1 db.orders.insertMany(
2 [
3 {
4 zip:"000001",
5 phone:"13101010101",
6 name:"LiuBei",
7 status:"created",
8 shippingFee:10,
9 orderLines:[
10 {product:"HuaweiMeta30Pro",sku:"2002",qty:100,price:6000,cost:5599},
11 {product:"HuaweiMeta40Pro",sku:"2003",qty:10,price:7000,cost:6599},
12 {product:"HuaweiMeta405G",sku:"2004",qty:80,price:4000,cost:3700}
13 ]
14 },
15
16 {
17 zip:"000001",
18 phone:"13101010101",
19 name:"LiuBei",
20 status:"created",
21 shippingFee:10,
22 orderLines:[
23 {product:"HuaweiMeta30Pro",sku:"2002",qty:100,price:6000,cost:5599},
24 {product:"HuaweiMeta40Pro",sku:"2003",qty:10,price:7000,cost:6599},
25 {product:"HuaweiMeta405G",sku:"2004",qty:80,price:4000,cost:3700}
26 ]
27 },
28
29 {
30 zip:"000001",
31 phone:"13101010101",
32 name:"LiuBei",
33 status:"created",
34 shippingFee:10,
35 orderLines:[
36 {product:"HuaweiMeta30Pro",sku:"2002",qty:100,price:6000,cost:5599},
37 {product:"HuaweiMeta40Pro",sku:"2003",qty:10,price:7000,cost:6599},
38 {product:"HuaweiMeta405G",sku:"2004",qty:80,price:4000,cost:3700}
39 ]
40 }]
41 );
原价总额,订单总额
添加两个字段,值为每个订单的原价总价和订单总额
1 db.orders.aggregate([{$addFields:{
2 totalPrice:{$sum:"$orderLines.price"},
3 totalCost:{$sum:"$orderLines.cost"},
4 }}]);
1 按totalPrice进行排序
2 [{
3 $addFields:{
4 totalPrice:{
5 $sum:"$orderLines.price"
6 },
7 totalCost:{
8 $sum:"$orderLines.cost"
9 },
10 }
11 }
12 ,//stage1
13
14 {
15 $sort:{
16 totalPrice:‐1
17 }
18 }//stage2
19 ]
20
第一个阶段:
针对整个集合添加两个字段:
totalPrice:订单原价总额
totalCost:订单实际总额
并将结果传到第二个阶段
第二个阶段:
按订单总价进行排序
聚合表达式
获取字段信息
$<field>:用$指示字段路径
$<field>.<subfield>:使用$和.来指示内嵌文档的路径
常量表达式
$literal:<value>:指示常量<value>
系统变量表达式
$$<variable>使用$$指示系统变量
$$CURRENT指示管道中当前操作的文档
聚合管道阶段
$project对输入文档进行再次投影
$match对输入文档进行筛选
$limit筛选出管道内前N篇文档
$skip跳过管道内前N篇文档
$unwind展开输入文档中的数组字段
$sort对输入文档进行排序
$lookup对输入文档进行查询操作
$group对输入文档进行分组
$out对管道中的文档输出
准备数据
1 db.userInfo.insertMany(
2 [
3 {nickName:"zhangsan",age:18},
4 {nickName:"lisi",age:20}]
5 );
聚合管道操作
$project:投影操作,将原始字段投影成指定名称,如将集合中的nickName投影成name
1 db.userInfo.aggregate({$project:{name:"$nickName"}});
$project可以灵活控制输出文档的格式,也可以剔除不需要的字段
1 db.userInfo.aggregate({$project:{name:"$nickName",_id:0,age:1}});
$match
$match进行文档筛选
剩余17页未读,继续阅读
资源评论
光芒软件工匠
- 粉丝: 789
- 资源: 64
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 126641091882064LSPatch.apk
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功