微服务 教程
1085个小节阅读:196.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
聚合管道在执行的过程中有一个优化的阶段,以提高性能。
xxxxxxxxxx
$addFields: {
maxTime: { $max: "$times" },
minTime: { $min: "$times" }
} },
{ $project: {
_id: 1, name: 1, times: 1, maxTime: 1, minTime: 1,
avgTime: { $avg: ["$maxTime", "$minTime"] }
} },
{ $match: {
name: "Joe Schmoe",
maxTime: { $lt: 20 },
minTime: { $gt: 5 },
avgTime: { $gt: 7 }
} }
优化思路:优化器把$match阶段分成了4个独立的过滤器,尽可能把过滤器放在$project操作前面,优化后的聚合管道如下:
xxxxxxxxxx
{ $match: { name: "Joe Schmoe" } },
{ $addFields: {
maxTime: { $max: "$times" },
minTime: { $min: "$times" }
} },
{ $match: { maxTime: { $lt: 20 }, minTime: { $gt: 5 } } },
{ $project: {
_id: 1, name: 1, times: 1, maxTime: 1, minTime: 1,
avgTime: { $avg: ["$maxTime", "$minTime"] }
} },
{ $match: { avgTime: { $gt: 7 } } }
再例如:
xxxxxxxxxx
{ $sort: { age : -1 } },
{ $match: { status: 'A' } }
优化后:
xxxxxxxxxx
{ $match: { status: 'A' } },
{ $sort: { age : -1 } }
实时效果反馈
1.下列聚合操作命令中有错的是哪个?
A $sum、$avg、$unset
B $min 、$push、$first
C $last、$group、$project
D $match、$limit、$max
答案
1=>A