DatabaseManagementSystems/Practical/Practical Exam/MongoDB/M6 - Map-reduce.md

179 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

2024-11-10 22:46:59 +05:30
# M6 - Map-reduce
**Problem statement:**
Design MongoDB database and perform following Map reduce operation:
Create Employee collection by considering following Fields:
i. Name: Embedded Doc (FName, LName)
ii. Company Name: String
iii. Salary: Number
iv. Designation: String
v. Age: Number
vi. Expertise: Array
vii. DOB: String or Date
viii. Email id: String
ix. Contact: String
x. Address: Array of Embedded Doc (PAddr, LAddr)
Execute the following query:
---
## Creating database
```mongo
use mapred;
```
## Inserting data:
```mongo
db.emp.insertMany([
{
Name: {FName: "Tanmay", LName: "Machkar"},
Company: "TCS",
Salary: 40000,
Designation: "Tester",
Age: 25,
Expertise: ['Mongodb','Mysql','Cassandra'],
DOB: new Date("2003-12-02"),
Email: "xyz@gmail.com",
Contact: 1234567890,
Address: [{PAddr: {City: "Pune", Rd: "Bharatmata"}}, {LAddr: {Pin_code: 411001}}]
},
{
Name: {FName: "Rajesh", LName: "Machkar"},
Company: "Infosys",
Salary: 50000,
Designation: "Programmer",
Age: 29,
Expertise: ['Mongodb','Mysql'],
DOB: new Date("1990-12-02"),
Email: "xy@gmail.com",
Contact: 1234567809,
Address: [{PAddr: {City: "Pune", Rd: "JM"}}, {LAddr: {Pin_code: 411047}}]
},
{
Name: {FName: "Tejas", LName: "Machkar"},
Company: "TCS",
Salary: 20000,
Designation: "Developer",
Age: 35,
Expertise: ['Mongodb'],
DOB: new Date("2000-11-22"),
Email: "x@gmail.com",
Contact: 1234567089,
Address: [{PAddr: {City: "Mumbai", Rd: "Airport"}}, {LAddr: {Pin_code: 411030}}]
},
{
Name: {FName: "Deepali", LName: "Machkar"},
Company: "Persistent",
Salary: 40000,
Designation: "Tester",
Age: 30,
Expertise: ['Mysql'],
DOB: new Date("1978-02-12"),
Email: "y@gmail.com",
Contact: 1234506789,
Address: [{PAddr: {City: "Phaltan", Rd: "Highway"}}, {LAddr: {Pin_code: 411012}}]
},
{
Name: {FName: "Om", LName: "Deokar"},
Company: "Persistent",
Salary: 25000,
Designation: "Programmer",
Age: 39,
Expertise: ['Cassandra'],
DOB: new Date("2007-03-15"),
Email: "z@gmail.com",
Contact: 1234567890,
Address: [{PAddr: {City: "Jaipur", Rd: "Pink"}}, {LAddr: {Pin_code: 411056}}]
},
])
```
## Queries
1. Display the total salary of per company.
```mongo
db.emp.mapReduce(
function(){
emit(this.Company, this.Salary);
},
function(key, values){
return Array.sum(values);
},
{ out: "query1"}
)
db.query1.find()
```
2. Display the total salary of company Name:"TCS".
```mongo
db.emp.mapReduce(
function(){
if(this.Company == "TCS"){
emit(this.Company, this.Salary);
}
},
function(key, values){
return Array.sum(values);
},
{ out: "query2"}
)
db.query2.find()
```
3. Return the average salary of company whose address is “Pune".
```mongo
db.emp.mapReduce(
function(){
if(this.Address[0].PAddr.City === "Pune"){
emit(this.Company, this.Salary);
}
},
function(key, values){
return Array.avg(values);
},
{ out: "query3"}
)
db.query3.find()
```
4. Display total count for “City=Pune”.
```mongo
db.emp.mapReduce(
function(){
if(this.Address[0].PAddr.City === "Pune"){
emit("Count", 1);
}
},
function(key, values){
return Array.sum(values);
},
{ out: "query4"}
)
db.query4.find()
```
5. Return count for city pune and age greater than 40.
```mongo
db.emp.mapReduce(
function(){
if(this.Address[0].PAddr.City === "Pune" && this.Age > 25){
emit("Count", 1);
}
},
function(key, values){
return Array.sum(values);
},
{ out: "query5"}
)
db.query5.find()
```
---