TechWriterDev
  • Cloud
    • AWS
      • 00_Doubts
      • CloudPractitioner
        • Cloud Computing
        • AWS Global Infrastructure
        • Introduction to AWS EC2
        • Elastic load balancer(ELB)
        • 04_Messaging_Queuing
        • Aditional Computing Service
        • Accessing AWS resources
        • AWS Networking
        • Storage
        • Amazon Database Solutions
        • Monitoring Tools
        • AWS Security
        • Distributed Denial Of Service Attacks
      • DeveloperAssociate
        • References
        • AWS DVA-C02 Services Index
        • Services
          • 00_IAM
            • Identity and Access Management (IAM)
            • Account Protection Mechanisms
            • Access Mechanism of AWS Resources
            • Security Tools
            • Responsibility Model
            • Advanced Concepts
          • 01_EC2
            • Elastic Compute Cloud (EC2)
            • EC2 Volume Types
            • Amazon Machine Image (AMI)
            • AWS charges for IPv4 address
          • 02_SecurityGroups
            • Security Groups
          • 03_Elastic_LoadBalancing
            • Terminology
            • Elastic load balancer
            • Features
            • Basics
          • 04_AutoScaling
            • Auto Scaling
          • 05_RDS
            • Relational Database Service (RDS)
            • Aurora
            • Security
            • RDS Proxy
          • 06_ElastiCache
            • Cache
            • Cache Offerings
          • 07_Route53
            • Basics of DNS
            • Route 53
          • 08_VPC
            • Virtual Private Cloud (VPC)
          • 09_S3
            • Simple Storage Service (S3)
            • S3 Features
            • S3 Encryption
            • S3 Features
            • S3 Bucket Policy and IAM Policy
          • 10_ECS
            • Elastic Container Service (ECS)
            • Elastic Container Registry (ECR)
            • AWS Copilot
          • 11_EKS
            • Elastic Kubernetes Service (EKS)
          • 12_SDK_CLI_Tips
            • Access AWS Resources
          • 13_CloudFront
            • Cloud Front
          • 14_Messaging
            • Simple Queue Service (SQS)
            • Simple Notification Service (SNS)
            • Fan Out Pattern
            • Kinesis
            • Compare and Contrast
          • 15_ElasticBeanStalk
            • Elastic Beanstalk
          • 16_CloudFormation
            • CloudFormation
            • Dynamic References
          • 17_Monitoring
            • AWS Monitoring
            • AWS CloudWatch
            • CloudWatch Alarms
            • Synthetics Canary
            • Amazon EventBridge (formerly CloudWatch Events)
            • X-Ray
            • OpenTelemetry
            • CloudTrail
          • 18_Lambda
            • Lambda
            • Lambda Integrations
            • Configuring Lambda
            • Lambda Layers
          • 19_API_Gateway
            • API Gateway
            • API Gateway Integrations
          • 20_DynamoDB
            • DynamoDB
            • Operations
            • Indexes
            • DynamoDB Accelerator (DAX)
            • DynamoDB Streams
            • Transactions
            • Integrations
          • 21_CICD
            • CICD
            • CodeCommit
            • CodePipeline
            • CodeBuild
            • CodeDeploy
            • CodeArtifact
            • CloudGuru
          • 22_SAM
            • Serverless Application Model (SAM)
          • 23_CDK
            • Cloud Development Kit (CDK)
          • 24_StepFunctions
            • Step Functions
            • Types of step function
          • 25_AppSync
            • AppSync
          • 26_Amplify
            • Amplify
          • 27_STS
            • Security Token Service (STS)
          • 28_DirectoryService
            • Active Directory
          • 29_KMS
            • Encryption
            • KMS API
            • Features
            • Cloud Hardware Security Module (HSM)
          • 30_SSM_Store
            • SSM Parameter Store
          • 31_SecretsManager
            • Secrets Manager
          • 32_Cognito
            • Cognito
      • Questions
        • AWS_Region
        • EC2
        • IAM
  • Database
    • MongoDb
      • Mongo db Basics
      • Mongo DB Atlas
      • Document
      • Import-Export based on Data Format
      • Mongo Shell Commands
      • Query Operators
      • Indexes
      • Upsert
      • MongoDB Aggregation Framework
      • Aggregation Framework Operators
    • PostgreSQL
      • POSTGRE SQL DataTypes
      • About table
      • Constraints
  • Technologies
    • RabbitMQ
      • RabbitMQ Concepts
      • Introduction to Exchanges
      • Introduction to Queues
    • Terraform
      • 00_Introduction
      • Configuration blocks
      • Commands
      • Variables
      • Terraform Cloud
      • Modules
  • Languages
    • Java
      • Logging
        • Getting Started
      • 00_Core
        • 00_Basics
          • Java Vs C++
          • Object oriented principles
          • Steps to compile a java program
          • JVM Internals
          • Understanding Java Development Kit
          • What is JIT Compiler?
          • Java data types
          • 07_identifiers_type_conversion
          • 08_references_and_packages
          • Steps for attaching scanner
        • Concurrency
          • 00_Threads
            • Threads
          • 01_ExecutorFramework
            • Executor Framework
            • Asynchronous Computation
      • 01_Backend
        • 01_HttpAndWebServerBasics
          • HTTP
          • Content Type
          • Web Server
        • 02_J2EE_Basics
          • J2EE_Basics
          • Why HttpServlet classs is declared as abstract class BUT with 100 % concrete functionality ?
        • 03_TomCatAndSession
          • What is a Session?
          • WebContainer
        • 04_PageNavigation
          • Cookies Additional Information
          • Page Navigation Techniques
        • 05_AboutServlet
          • CGI v/s Servlet
          • Executor Framework
          • Servlet Life cycle
          • SERVLET CONFIG
          • Servlet Context
          • Servlet Listener (web application listener)
        • 08_SpringBoot
          • Spring Boot
          • Some common annotations used in spring eco system
        • 09_SpringDataJPA
          • Spring Data JPA
        • Java_Language_Changes
          • JDK enhancement tracking reference
        • 06_ORM_Hibernate
          • readmes
            • Hibernate
            • Advantages of Hibernate
            • Hibernate Caching
            • Hibernate API
            • Hibernate Query API
            • Hibernate Annotations and JPQL
            • Entity and Value Type
        • 07_SpringFramework
          • bean_validation
            • Bean Validation
          • core
            • readme
              • Spring
              • Spring Framework Modules
              • Spring MVC Request flow
              • Dependency Injection
              • Spring Beans
              • 06_Spring_Framework_Annotations
      • 03_Tools
        • Maven
          • Maven
  • SoftwareEngineering
    • DesignPatterns
      • Notes
        • Basics
        • OOP
        • SOLID Principles
        • 03_Creational
          • Abstract Factory (aka Kit)
          • Builder
          • Factory Method (aka Virtual constructor)
          • Prototype
          • Singleton
        • 04_Structural
          • Adapter (aka Wrapper)
          • Bridge (aka Handle | Body)
          • Composite
          • Decorator (aka Wrapper)
          • Facade
          • Flyweight
          • Proxy (aka Surrogate)
        • 05_Behavioral
          • Chain of Responsibility
          • Command (aka Action | Transaction)
          • Iterator (aka Cursor)
          • Observer (aka Publish-Subscribe | Dependents)
          • Strategy (aka Policy)
    • Principles
      • REST
        • REST
  • Tools
    • Containers
      • Docker
        • Docker
        • Docker Image
        • Commands
        • Compose
        • Best Practices
      • Kubernetes
        • Kubernetes
    • VCS
      • Git
        • Quick reference of useful Git commands
Powered by GitBook
On this page
  • $match operator
  • $project operator
  • $addFields operator
  • $geoNear operator
  • Cursor-like stages
  1. Database
  2. MongoDb

Aggregation Framework Operators

$match operator

  • A filter operator, which allows only documents that satisfy specified criteria in the operator to pass ahead in the pipeline.

  • If match is the first stage of pipeline, then it can take advantage of indexes.

  • We can use multiple $match operator in a single pipeline.

  • When using $match operator, we cannot use $where operator.

  • We can use only $text query operator if $match stage should be the first stage of pipeline.

  • $match operator does not allow projections.

  • Example:

    • A sample query on a collection named movies with following criteria,

      • imdb.rating is at least 7

      • genres does not contain "Crime" or "Horror"

      • rated is either "PG" or "G"

      • languages contains "English" and "Japanese"

          db.movies.aggregate([
          { $match: {
              "imdb.rating": { "$gte": 7 },
              "genres": { "$nin": [ "Crime", "Horror" ] } ,
              "rated": { "$in": ["PG", "G" ] },
              "languages": { "$all": [ "English", "Japanese" ] }
              }
          }])

$project operator

  • A map like operator, which applies some transformation among collection.

  • Once we specified one field to retain, we must specify all fields we want to retain. The _id field is only exception.

  • It lets us add new fields.

  • This operator can be used as many times as required within an aggregation pipeline.

  • It can also be used to re assign values to existing field names, and to derive entirely new fields.

  • Example:

    • Adding project to above example

        var pipeline = [{$match: {
        "imdb.rating": { "$gte": 7 },
        "genres": { "$nin": [ "Crime", "Horror" ] } ,
        "rated": { "$in": ["PG", "G" ] },
        "languages": { "$all": [ "English", "Japanese" ] }
        }
        },
        {
            "$project": { "_id": 0, "title": 1, "rated": 1 }
        }]
  • Example:

        db.movies.aggregate([
        {
            $match: {
            title: {
                $type: "string"
            }
            }
        },
        {
            $project: {
            title: { $split: ["$title", " "] },
            _id: 0
            }
        },
        {
            $match: {
            title: { $size: 1 }
            }
        }])

$addFields operator

  • Adds fields to a document.

  • It's a transformation operator, just like $project operator.

  • It can modify existing fields or add new transformation fields to incoming documents.

$geoNear operator

  • Helps in performing geo queries within an aggregation pipeline. (Like $near query operator).

  • It must be first stage in the pipeline.

  • It can be used with charted collections.

  • When perfoming this operation on a collection, the collection must have one and only one 2dsphere index.

  • If using 2dsphere, the distance returned is in meters. Else if using legacy coordinates, the distance returned is in radians.

Cursor-like stages

  • $count, $skip, $sort, $limit

  • For sort stage, we can specify multiple different fields.

  • If sort is near the beginning of pipeline i.e., before project and unwind in the group stage, it can take advantage of indexes. Else, it will perform in-memory sort, which will increase memory consumption.

  • Sort operation in an aggregation pipeline is limited by default to 100 MB RAM usage. To allow larger dataset handling, diskUse needs to be allowed in aggregation pipeline.

    db.movies.aggregate([
        {stage1},
        {stage2},
        {
          "$sort":{"field":1}  
        }], {allowDiskUse:true})
  • The above option, allows us to do excess of 100 MB of memory calculation using disk. If not done so, operation gets terminated in the server.

PreviousMongoDB Aggregation FrameworkNextPostgreSQL

Last updated 4 months ago

Syntax

Syntax