MongoDB Aggregation

Docs Home → Develop Applications → MongoDB Manual
Aggregation Pipeline Operators
Aggregation Pipeline Stages

Stages
db.collection.aggregate( [ { Expression Objects

{ <field1>: <expression1>, ... }

Operator Expressions
{ <operator>: [ <argument1>, <argument2> … ] }

If operator accepts a single argument, you can omit the outer array designating the argument list:

{ <operator>: <argument> }

#dateAdd
# Embedded Document Fields

$lookupPerform Multiple Joins and a Correlated Subquery with $lookup

$exprCompare Two Fields from A Single Document

Practical MongoDB Aggregations Book
Creating Functions in MongoDB Console [duplicate] :
Call function inside mongodb’s aggregate?

Writing complex query in mongo DB :


Please Try the below query :

Step 1 : we are filtering only those documents with "class" : "a" OR "class" : "b" and "hrs" key exists.

Step 2 : we are doing multiplication of "rate" , "hrs" with 52 and storing the result in the key "rateMultiply"

Step 3 : we are filtering the documents on the below mentioned criteria : class = "a" && rate > "20000" OR class = "b" && (rate X hrs X 52) > "20000"

Step 4 : we are displaying the documnets with only those fields which we need.

Lets create a collection " exp4 " and insert the below documents :

db.exp4.insert({ "_id" : "3434sfsf", "rate" : 60, "class" : "a" });
db.exp4.insert({ "_id" : "sdsdsd", "rate" : 60, "class" : "b", "hrs" : 8 });
db.exp4.insert({ "_id" : "123", "rate" : 30000, "class" : "a", "hrs" : 8 });
db.exp4.insert({ "_id" : "12567", "rate" : 12000, "class" : "b" });
Now lets QUERY the collection :

db.exp4.aggregate([
     { $match: 
       {$or : [ {"class" : "a"},
                {$and : [{"class":"b"},{"hrs": {"$exists" : 1}}]}
              ]
       }
     },
     { $project : 
        { rateMultiply : { $multiply: ["$rate","$hrs",52]}, 
         rate:1, class:1, hrs : 1 
        } 
     },
     { $match : 
       {$or : [ 
                { $and : [ {"class" : "a"} , 
                           {"rate" : {"$gt" : 20000}} 
                         ] 
                } , 
                { $and : [ {"class" : "b"}, 
                           {rateMultiply: {$gt:20000}}
                         ]
                 } 
               ] 
       }
     },
     { $project: {class : 1 , rate : 1 , hrs : 1 }
     }
  ])
RESULT :

{ "_id" : "sdsdsd", "rate" : 60, "class" : "b", "hrs" : 8 }
{ "_id" : "123", "rate" : 30000, "class" : "a", "hrs" : 8 }

Call stored function in mongodb :

db.system.js.save({
    _id: "echoFunction",
    value: function (x) {
        return 'echo: ' + x;
    }
})

db.eval("echoFunction('test')") // -> "echo: test"




















Leave a Reply

Your email address will not be published. Required fields are marked *