1. DESIGN AND DEVELOP MONGODB QUERIES FOR BASIC AND AGGREGATION OPERATIONS.

ObjectId("..."),
       BASIC AND AGGREGATION OPERATIONS.
                                                                            ObjectId("..."),
                                                                            ObjectId("..."),
1. Database Creation :-
                                                                            ObjectId("..."),
use Employee
                                                                            ObjectId("..."),
Output:
                                                                            ObjectId("...")
switched to db Employee
                                                                        ]
                                                                    }
2. Checking of currently selected database :-
db
                                                                    6. Updating Single Document :-
Output:
                                                                    db.EmpData.updateOne({EmpNo: 1}, {$set: {Salary: 25000}})
Employee
                                                                    Output:
                                                                    { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1
3. Collection Creation :-                                           }
db.createCollection("EmpData")
Output:                                                             7. Updating Multiple Documents :-
{ "ok" : 1 }                                                        db.EmpData.updateMany({EmpNo: {$gte: 3}}, {$set: {Salary:
                                                                    25000}})
                                                                    Output:
4. Checking of created collection :-
                                                                    { "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4
show collections                                                    }
Output:
EmpData                                                             8. Reading all documents :-
                                                                    db.EmpData.find()
5. Inserting of Documents in collection :-                          Output:
db.EmpData.insertMany([                                             { "_id" : ObjectId("..."), "EmpNo" : 1, "Name" : "Ajay",
 {EmpNo: 1, Name: "Ajay", Department: "Admin", Salary:              "Department" : "Admin", "Salary" : 15000 }
15000},                                                             { "_id" : ObjectId("..."), "EmpNo" : 2, "Name" : "Raja",
    {EmpNo: 2, Name: "Raja", Department: "Clerk", Salary: 12000},   "Department" : "Clerk", "Salary" : 12000 }

 {EmpNo: 3, Name: "John", Department: "System Analyst",             { "_id" : ObjectId("..."), "EmpNo" : 3, "Name" : "John",
Salary: 10000},                                                     "Department" : "System Analyst", "Salary" : 10000 }

 {EmpNo: 4, Name: "Vijay", Department: "Accountant", Salary:        { "_id" : ObjectId("..."), "EmpNo" : 4, "Name" : "Vijay",
14000},                                                             "Department" : "Accountant", "Salary" : 14000 }

 {EmpNo: 5, Name: "Sanjay", Department: "Admin", Salary:            { "_id" : ObjectId("..."), "EmpNo" : 5, "Name" : "Sanjay",
15000},                                                             "Department" : "Admin", "Salary" : 15000 }

 {EmpNo: 6, Name: "Rathika", Department: "Manager", Salary:         { "_id" : ObjectId("..."), "EmpNo" : 6, "Name" : "Rathika",
13000}                                                              "Department" : "Manager", "Salary" : 13000 }

])
Output:                                                             9. Reading single document :-

{                                                                   db.EmpData.findOne()

    "acknowledged" : true,                                          Output:

    "insertedIds" : [                                               {
    "_id" : ObjectId("..."),                                  { "_id" : ObjectId("..."), "EmpNo" : 3, "Name" : "John",
                                                              "Department" : "System Analyst", "Salary" : 10000 }
    "EmpNo" : 1,
                                                              { "_id" : ObjectId("..."), "EmpNo" : 4, "Name" : "Vijay",
    "Name" : "Ajay",                                          "Department" : "Accountant", "Salary" : 14000 }
    "Department" : "Admin",                                   { "_id" : ObjectId("..."), "EmpNo" : 6, "Name" : "Rathika",
    "Salary" : 15000                                          "Department" : "Manager", "Salary" : 13000 }

}
                                                              14. Performing Aggregation Operation (Sum) :-

10. Reading documents with AND condition :-                   db.EmpData.aggregate([{$group: {_id: "$Department",
                                                              Sum_Salary_Department_wise: {$sum: "$Salary"}}}])
db.EmpData.find({$and: [{Name: "Ajay"}, {Salary: 15000}]})
                                                              Output:
Output:
                                                              { "_id" : "Manager", "Sum_Salary_Department_wise" : 13000 }
{ "_id" : ObjectId("..."), "EmpNo" : 1, "Name" : "Ajay",
"Department" : "Admin", "Salary" : 15000 }                    { "_id" : "System Analyst", "Sum_Salary_Department_wise" :
                                                              10000 }
                                                              { "_id" : "Clerk", "Sum_Salary_Department_wise" : 12000 }
11. Reading documents with OR condition :-
                                                              { "_id" : "Accountant", "Sum_Salary_Department_wise" : 14000 }
db.EmpData.find({$or: [{Name: "Raja"}, {Salary: 15000}]})
                                                              { "_id" : "Admin", "Sum_Salary_Department_wise" : 30000 }
Output:
{ "_id" : ObjectId("..."), "EmpNo" : 1, "Name" : "Ajay",
"Department" : "Admin", "Salary" : 15000 }                    15. Performing Aggregation Operation (Min) :-

{ "_id" : ObjectId("..."), "EmpNo" : 2, "Name" : "Raja",      db.EmpData.aggregate([{$group: {_id: "$Department",
"Department" : "Clerk", "Salary" : 12000 }                    Min_Salary_Department_wise: {$min: "$Salary"}}}])

{ "_id" : ObjectId("..."), "EmpNo" : 5, "Name" : "Sanjay",    Output:
"Department" : "Admin", "Salary" : 15000 }                    { "_id" : "Manager", "Min_Salary_Department_wise" : 13000 }
                                                              { "_id" : "System Analyst", "Min_Salary_Department_wise" :
12. Reading documents with Greater Than constraint :-         10000 }

db.EmpData.find({Salary: {$gt: 10000}})                       { "_id" : "Clerk", "Min_Salary_Department_wise" : 12000 }

Output:                                                       { "_id" : "Accountant", "Min_Salary_Department_wise" : 14000 }

{ "_id" : ObjectId("..."), "EmpNo" : 1, "Name" : "Ajay",      { "_id" : "Admin", "Min_Salary_Department_wise" : 15000 }
"Department" : "Admin", "Salary" : 15000 }
{ "_id" : ObjectId("..."), "EmpNo" : 2, "Name" : "Raja",      16. Performing Aggregation Operation (Max) :-
"Department" : "Clerk", "Salary" : 12000 }
                                                              db.EmpData.aggregate([{$group: {_id: "$Department",
{ "_id" : ObjectId("..."), "EmpNo" : 4, "Name" : "Vijay",     Max_Salary_Department_wise: {$max: "$Salary"}}}])
"Department" : "Accountant", "Salary" : 14000 }
                                                              Output:
{ "_id" : ObjectId("..."), "EmpNo" : 5, "Name" : "Sanjay",
"Department" : "Admin", "Salary" : 15000 }                    { "_id" : "Manager", "Max_Salary_Department_wise" : 13000 }
{ "_id" : ObjectId("..."), "EmpNo" : 6, "Name" : "Rathika",   { "_id" : "System Analyst", "Max_Salary_Department_wise" :
"Department" : "Manager", "Salary" : 13000 }                  10000 }
                                                              { "_id" : "Clerk", "Max_Salary_Department_wise" : 12000 }
13. Reading documents with Less Than constraint :-            { "_id" : "Accountant", "Max_Salary_Department_wise" : 14000 }
db.EmpData.find({Salary: {$lt: 15000}})                       { "_id" : "Admin", "Max_Salary_Department_wise" : 15000 }
Output:
{ "_id" : ObjectId("..."), "EmpNo" : 2, "Name" : "Raja",      17. Performing Aggregation Operation (Avg) :-
"Department" : "Clerk", "Salary" : 12000 }
                                                              db.EmpData.aggregate([{$group: {_id: "$Department",
                                                              Average_Salary_Department_wise: {$avg: "$Salary"}}}])
Output:                                                          db.EmpData.count()
{ "_id" : "Manager", "Average_Salary_Department_wise" : 13000    Output:
}
                                                                 6
{ "_id" : "System Analyst", "Average_Salary_Department_wise" :
10000 }
{ "_id" : "Clerk", "Average_Salary_Department_wise" : 12000 }    22. Removing Documents based on criteria / constraint :-

{ "_id" : "Accountant", "Average_Salary_Department_wise" :       db.EmpData.remove({Name: "Raja"})
14000 }                                                          Output:
{ "_id" : "Admin", "Average_Salary_Department_wise" : 15000 }    WriteResult({ "nRemoved" : 1 })


18. First Function :-                                            23. Removing all Documents :-
db.EmpData.aggregate([{$group: {_id: "$Department",              db.EmpData.remove({})
First_Document: {$first: "$Name"}}}])
                                                                 Output:
Output:
                                                                 WriteResult({ "nRemoved" : 5 })
{ "_id" : "Manager", "First_Document" : "Rathika" }
{ "_id" : "System Analyst", "First_Document" : "John" }
                                                                 24. Finding documents after removal :-
{ "_id" : "Clerk", "First_Document" : "Raja" }
                                                                 db.EmpData.find()
{ "_id" : "Accountant", "First_Document" : "Vijay" }
                                                                 Output:
{ "_id" : "Admin", "First_Document" : "Ajay" }


                                                                 25. Counting documents after removal :-
19. Last Function :-
                                                                 db.EmpData.count()
db.EmpData.aggregate([{$group: {_id: "$Department",
Last_Document: {$last: "$Name"}}}])                              Output:
Output:                                                          0
{ "_id" : "Manager", "Last_Document" : "Rathika" }
{ "_id" : "System Analyst", "Last_Document" : "John" }           26. Dropping Collection :-
{ "_id" : "Clerk", "Last_Document" : "Raja" }                    db.EmpData.drop()
{ "_id" : "Accountant", "Last_Document" : "Vijay" }              Output:
{ "_id" : "Admin", "Last_Document" : "Sanjay" }                  true


20. Push Functions :-                                            27. Dropping the database :-
db.EmpData.aggregate([{$group: {_id: "$Department", Name:        db.dropDatabase()
{$push: "$Name"}}}])
                                                                 Output:
Output:
                                                                 { "dropped" : "Employee", "ok" : 1 }
{ "_id" : "Manager", "Name" : [ "Rathika" ] }
                                                                 30. Showing databases after dropping :-
{ "_id" : "System Analyst", "Name" : [ "John" ] }
                                                                 show dbs
{ "_id" : "Clerk", "Name" : [ "Raja" ] }
                                                                 Output:
{ "_id" : "Accountant", "Name" : [ "Vijay" ] }
                                                                 admin      0.000GB
{ "_id" : "Admin", "Name" : [ "Ajay", "Sanjay" ] }
                                                                 config    0.000GB
                                                                 local     0.000GB
21. Counting the Number of documents :-
