当前位置:网站首页>Mongodb aggregation operation summary
Mongodb aggregation operation summary
2022-07-04 22:37:00 【cui_ yonghua】
1. Role of aggregation operation
MongoDB Middle polymerization (aggregate) It's mainly used to process data ( Such as the statistical average , Make a peace, etc ), And return the calculated data result .
It's kind of similar SQL Statement count(*)
, sum()
, avg()
.
2. aggregate() Method
MongoDB The method of aggregation used in aggregate().
Grammar format :db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
Case study : Count the number of articles written by each author , Use aggregate() The calculation results are as follows
db.mycol.aggregate([{
$group : {
_id : "$by_user", num_tutorial : {
$sum : 1}}}])
# similar SQL sentence
select by_user, count(*) from mycol group by by_user;
In the example above , Through fields by_user Fields group data , And calculate by_user The sum of the same values of the fields .
3. Common aggregate expressions
1、$sum Calculate the sum .
db.mycol.aggregate([{
$group : {
_id : "$by_user", num_tutorial : {
$sum : "$likes"}}}])
1、$avg Calculate average
db.mycol.aggregate([{
$group : {
_id : "$by_user", num_tutorial : {
$avg : "$likes"}}}])
1、$min Get the minimum value of all documents in the collection .
db.mycol.aggregate([{
$group : {
_id : "$by_user", num_tutorial : {
$min : "$likes"}}}])
1、$max Get the maximum value of all documents in the collection .
db.mycol.aggregate([{
$group : {
_id : "$by_user", num_tutorial : {
$max : "$likes"}}}])
1、$push Add values to an array , Does not determine whether there are duplicate values .
db.mycol.aggregate([{
$group : {
_id : "$by_user", url : {
$push: "$url"}}}])
1、$addToSet Add values to an array , Will determine whether there are duplicate values , If same value already exists in array , Do not join .
db.mycol.aggregate([{
$group : {
_id : "$by_user", url : {
$addToSet : "$url"}}}])
1、$first Get the first document data according to the sorting of resource documents .
db.mycol.aggregate([{
$group : {
_id : "$by_user", first_url : {
$first : "$url"}}}])
1、$last Get the last document data according to the sorting of resource documents
db.mycol.aggregate([{
$group : {
_id : "$by_user", last_url : {
$last : "$url"}}}])
4. The concept of pipes
Pipes in Unix and Linux It is generally used to take the output of the current command as the parameter of the next command .
MongoDB The polymerization pipeline of will MongoDB The document passes the result to the next pipeline after processing one pipeline . Pipeline operation can be repeated .
expression : Process input documents and output . Expressions are stateless , Only documents that can be used to calculate the current aggregate pipeline , Can't process other documents .
Schematic diagram of polymerization pipeline :
amount to Sql sentence : Select cust_id,sum(amount)as total from orders where status= "A"
Several operations commonly used in aggregation framework :
$project
: Modify the structure of the input document . Can be used to rename 、 Add or remove fields , It can also be used to create calculation results and nested documents .$match
: For filtering data , Output only documents that meet the criteria .$match Use MongoDB Standard query operation .$limit
: Used to restrict MongoDB The number of documents returned by the aggregation pipeline .$skip
: Skip the specified number of documents in the aggregation pipeline , And return the remaining documents .$unwind
: Split an array type field in the document into multiple fields , Each contains a value in the array .$group
: Group documents in a collection , Can be used for statistical results .$sort
: Sort the input documents and output .$geoNear
: Output ordered documents close to a geographic location .
Case study 1:$project
db.article.aggregate({
$project: {
title: 1, author: 1,}});
# By default _id Fields are included , If you want to exclude _id That's how it works
db.article.aggregate({
$project: {
_id : 0 ,title: 1 ,author: 1}});
Case study 2:$match
Case study , Get score greater than 70 Less than or equal to 90 Record , Then send the eligible records to the next stage $group The pipeline operator handles .
db.articles.aggregate([{
$match : {
score : {
$gt : 70, $lte : 90 } } },{
$group: {
_id: null, count: {
$sum: 1 } } }]);
Case study 3: after $skip
After the pipeline operator is processed , The first five documents are " Filter " fall .
db.article.aggregate({
$skip : 5 });
5. SQL Corresponding to aggregation
SQL The term 、 function 、 Concept | MongoDB Aggregation operation |
---|---|
WHERE | $match |
GROUP BY | $group |
HAVING | $match |
SELECT | $project |
ORDER BY | $sort |
LIMIT | $limit |
SUM() | $sum |
COUNT() | $sum |
join | $lookup (3.2 Version added ) |
边栏推荐
- Now MySQL cdc2.1 is parsing the datetime class with a value of 0000-00-00 00:00:00
- LOGO特训营 第四节 字体设计的重要性
- Logo special training camp section II collocation relationship between words and graphics
- Ascendex launched Walken (WLKN) - an excellent and leading "walk to earn" game
- 制作条形码的手机App推荐
- MySQL storage data encryption
- Apachecn translation, proofreading, note sorting activity progress announcement 2022.7
- 如何实现轻松管理1500万员工?
- LOGO特训营 第一节 鉴别Logo与Logo设计思路
- 我在linux里面 通过调用odspcmd 查询数据库信息 怎么静默输出 就是只输出值 不要这个
猜你喜欢
Visual task scheduling & drag and drop | scalph data integration based on Apache seatunnel
LOGO special training camp section I identification logo and Logo Design Ideas
LOGO特訓營 第三節 首字母創意手法
【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用
Unity-VScode-Emmylua配置报错解决
Play with grpc - go deep into concepts and principles
将QA引入软件开发生命周期是工程师要遵循的最佳实践
10 schemes to ensure interface data security
Li Kou 98: verify binary search tree
虚拟人产业面临的挑战
随机推荐
Xiangjiang Kunpeng joined the shengteng Wanli partnership program and continued to write a new chapter of cooperation with Huawei
Lost in the lock world of MySQL
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
集群的概述与定义,一看就会
堆排序代码详解
PostgreSQLSQL高级技巧透视表
MD5 tool class
AscendEX 上线 Walken (WLKN) - 一款卓越领先的“Walk-to-Earn”游戏
Detailed explanation of flask context
Recommendation of mobile app for making barcode
串口数据帧
The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
Short video system source code, click the blank space of the screen, the keyboard does not automatically stow
Logo special training camp Section V font structure and common design techniques
如何实现轻松管理1500万员工?
BigFilter全局交易防重组件的介绍与应用
30余家机构联合发起数字藏品行业倡议,未来会如何前进?
Solana chain application crema was shut down due to hacker attacks
Scala download and configuration
Mysql root 账号如何重置密码