当前位置:网站首页>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 ) |
边栏推荐
- Li Kou 98: verify binary search tree
- 蓝队攻防演练中的三段作战
- Sqlserver encrypts and decrypts data
- Convolutional neural network model -- lenet network structure and code implementation
- 模拟摇杆控制舵机
- Close system call analysis - Performance Optimization
- Concurrent network modular reading notes transfer
- MYSQL架构——逻辑架构
- Interview essential leetcode linked list algorithm question summary, whole process dry goods!
- PHP short video source code, thumb animation will float when you like it
猜你喜欢
质量体系建设之路的分分合合
MYSQL架构——用户权限与管理
将QA引入软件开发生命周期是工程师要遵循的最佳实践
Huawei Nova 10 series released Huawei application market to build a solid application security firewall
Google Earth Engine(GEE)——Tasks升级,实现RUN ALL可以一键下载任务类型中的所有影像
Redis的持久化机制
Use blocconsumer to build responsive components and monitor status at the same time
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
2022-07-04:以下go语言代码输出什么?A:true;B:false;C:编译错误。 package main import “fmt“ func main() { fmt.Pri
随机推荐
Scala download and configuration
Xiangjiang Kunpeng joined the shengteng Wanli partnership program and continued to write a new chapter of cooperation with Huawei
Test will: bug classification and promotion solution
PostgreSQL JOIN实践及原理
Deployment of JVM sandbox repeater
Force buckle 2_ 1480. Dynamic sum of one-dimensional array
SPSS安装激活教程(包含网盘链接)
Tla+ introductory tutorial (1): introduction to formal methods
Éducation à la transmission du savoir | Comment passer à un test logiciel pour l'un des postes les mieux rémunérés sur Internet? (joindre la Feuille de route pour l'apprentissage des tests logiciels)
NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
Force buckle 3_ 383. Ransom letter
SPSS installation and activation tutorial (including network disk link)
Business is too busy. Is there really no reason to have time for automation?
达梦数据凭什么被称为国产数据库“第一股”?
【OpenGL】笔记二十九、抗锯齿(MSAA)
堆排序代码详解
常用的开源无代码测试工具
TLA+ 入门教程(1):形式化方法简介
特征缩放 标准化 归一化
Li Kou 98: verify binary search tree