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
  • Comparison Operators
  • Logic Operators
  • Expressive Operator
  • Array Operators
  1. Database
  2. MongoDb

Query Operators

  • Query operators allow us additional ways to locate data within database.

  • $ in mongodb is used in multiple scenarios when prefixed. These use cases are as follows,

    • Precedes MQL operators and Update Operators.

    • Precedes Aggregation pipeline stages.

    • Accesing field values.

Comparison Operators

  • $eq - Equal to operator.

  • $ne - Not equal to operator.

  • $gt - Greater than operator.

  • $lt - Less than operator.

  • $gte - Greater than equal to operator.

  • $lte - Less than equal to operator.

    • Syntax for operators

        {field: {operator: value}}
    • Example

        db.accounts.find({"age": {"$gte": 18}})

Logic Operators

  • $and - Returns result that match all specified query clauses.

  • $or - Returns result that match atleast one specified query clauses.

  • $nor - Returns result that fail to match specified query clauses.

    • Syntax for $and, $or, $nor operators

          {operator: [{statement1}, {statement2},...]}
    • Example

          {$or: [ {"age":18}, {"rank": {"$lt": 100}} ] } 
    • $and is an implicit operator used when an operator is not specified.

    • Example

          db.accounts.find(
          {
              "account_id": {"$gt": 25, "$lt":100}
          })
    • In the above query an implicit $and operator is used to find accounts between 25 and 100 ( (25, 100) ) open range.

    • But when should one use explicit $and operator ?

      • When you need to include the same operator more than once in a query then use the operator explicitly.

      • Example

        db.companies.find(
            { "$and": 
                [ 
                    {"$or": 
                        [ {"founded_year": 2004}, {"founded_month":10}]
                    }, 
                    {"$or":
                        [ {"category_code":"social"}, {"category_code": "web"}] 
                    }
                ]
            })
  • $not - Returns result that negates the query requirements.

    • Syntax for $not operator

          {$not: {statement}}

Expressive Operator

  • $expr operator allows for more complex queries for comparing fields within a document by using aggregation expression.

  • When $ symbol is appended to document field it yields the field value.

  • Example

        db.trips.find(
            { "$expr": 
                { "$and": 
                    [ { "$gt": [ "$tripduration", 1200 ]},
                      { "$eq": [ "$end station id", "$start station id" ]}
                    ]
                }
            })
    • Note, in the above query we are using aggregation syntax $gt, part of Aggregation operator and not MQL syntax.

Array Operators

  • Querying an array using an array returns only documents with queried array, consisting of all the elements specified in the query, in the same order.

  • Querying a document with array as querying field (i.e restriction) then, it will return documents which has one value as an array element.

  • Example:

        db.listingsAndReviews.find({ "amenities": "Wifi"})
    • In the above example, suppose amenities is an array field in the document and "Wifi" is one of the values. It looks like we are querying a field that has "Wifi" as its value.

  • Use the below operators only against an array field.

    • $all: Return all documents containing all the elements specified in the query array, regardless of the order of elements.

      db.listingsAndReviews.find({ "amenities": {
                                    "$all": [ "Internet", "Wifi",  "Kitchen",
                                             "Heating", "Family/kid friendly",
                                             "Washer", "Dryer", "Essentials",
                                             "Shampoo", "Hangers",
                                             "Hair dryer", "Iron",
                                             "Laptop friendly workspace" ]
                                           }
                              })
    
    • $size: Returns documents containing array field of size specified.

      db.listingsAndReviews.find(
          { "amenities": {
               "$size": 20
          }})
    
    • $elemMatch:

      • This operator matches documents that contain an array field with atleast one element that matches the specified criteria.

      • Example:

          db.grades.find(
              { "scores": 
                  { "$elemMatch": 
                      { "type": "extra credit" 
                      } 
                  }
              }).pretty()
      • This operator can also be used with projections.

      • Example:

          db.grades.find(
              { "class_id": 431 },    //restriction
              { "scores":             //projection
                  { "$elemMatch": 
                      { "score": 
                          { "$gt": 85 } 
                      } 
                  }
               }).pretty()
    • . : Dot operator (aka Dot notation)

      • Querying elements in an array which consists of sub document or arrays.

      • To use dot operator in arrays, specify position of element in the array.

      • Example:

          db.companies.find(
              { "relationships.0.person.first_name": "Mark",
                "relationships.0.title": {"$regex": "CEO" } 
              },
              { "name": 1 }).pretty()
PreviousMongo Shell CommandsNextIndexes

Last updated 4 months ago