当前位置:网站首页>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 ) |
边栏推荐
- Logo Camp d'entraînement section 3 techniques créatives initiales
- Naacl-22 | introduce the setting of migration learning on the prompt based text generation task
- 不同环境相同配置项的内容如何diff差异?
- With this PDF, we finally got offers from eight major manufacturers, including Alibaba, bytek and Baidu
- Sqlserver encrypts and decrypts data
- The proofreading activity of data science on the command line second edition was restarted
- 特征缩放 标准化 归一化
- High school physics: linear motion
- 繁华落尽、物是人非:个人站长该何去何从
- Huawei Nova 10 series released Huawei application market to build a solid application security firewall
猜你喜欢
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
Introduction and application of bigfilter global transaction anti duplication component
Unity修仙手游 | lua动态滑动功能(3种源码具体实现)
MYSQL架构——用户权限与管理
Visual task scheduling & drag and drop | scalph data integration based on Apache seatunnel
It is said that software testing is very simple, but why are there so many dissuasions?
BigFilter全局交易防重组件的介绍与应用
LOGO特训营 第三节 首字母创意手法
Play with grpc - go deep into concepts and principles
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
随机推荐
嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧
阿里推出新品牌“瓴羊”,致力成为“数字化领头羊”
Mysql root 账号如何重置密码
【lua】int64的支持
odps 中 对表进行了一次备份,为什么在元数据库查m_table 时,两张表的逻辑大小不一致,但数
SPSS installation and activation tutorial (including network disk link)
制作条形码的手机App推荐
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
SQL中MAX与GREATEST的区别
PMO: compare the sample efficiency of 25 molecular optimization methods
测试必会:BUG的分类及推进解决
繁華落盡、物是人非:個人站長該何去何從
环境加密技术解析
【烹饪记录】--- 青椒炒千张
Test will: bug classification and promotion solution
Scala下载和配置
都说软件测试很简单有手就行,但为何仍有这么多劝退的?
MySQL storage data encryption
leetcode 72. Edit distance edit distance (medium)
About stack area, heap area, global area, text constant area and program code area