3.9 KiB
3.9 KiB
M2 - Crud Operations
Problem Statement: Design and Develop MongoDB Queries using CRUD operations: Create Employee collection by considering following Fields: i. Emp_id : Number ii. Name: Embedded Doc (FName, LName) iii. Company Name: String iv. Salary: Number v. Designation: String vi. Age: Number vii. Expertise: Array viii. DOB: String or Date ix. Email id: String x. Contact: String xi. Address: Array of Embedded Doc (PAddr, LAddr) Insert at least 5 documents in collection by considering above attribute and execute following queries:
- Creates a new document if no document in the employee collection contains {Designation: "Tester", Company_name: "TCS", Age: 25}
- Finds all employees working with Company_name: "TCS" and increase their salary by 2000.
- Matches all documents where the value of the field Address is an embedded document that contains only the field city with the value "Pune" and the field Pin_code with the value "411001".
- Find employee details who are working as "Developer" or "Tester".
- Drop Single documents where designation="Developer".
- Count number of documents in employee collection.
Creating database & collection:
use empDB
db.createCollection("Employee")
Inserting data:
db.Employee.insertMany([
{
Name: {FName: "Ayush", LName: "Kalaskar"},
Company: "TCS",
Salary: 45000,
Designation: "Programmer",
Age: 24,
Expertise: ['Docker', 'Linux', 'Networking', 'Politics'],
DOB: new Date("1998-03-12"),
Email: "ayush.k@tcs.com",
Contact: 9972410427,
Address: [{PAddr: "Kokan, Maharashtra"}, {LAddr: "Lohegaon, Pune", Pin_code: 411014}]
},
{
Name: {FName: "Mehul", LName: "Patil"},
Company: "MEPA",
Salary: 55000,
Designation: "Tester",
Age: 20,
Expertise: ['HTML', 'CSS', 'Javascript', 'Teaching'],
DOB: new Date("1964-06-22"),
Email: "mehul.p@mepa.com",
Contact: 9972410426,
Address: [{PAddr: "NDB, Maharashtra"}, {LAddr: "Camp, Pune", Pin_code: 411001}]
},
{
Name: {FName: "Himanshu", LName: "Patil"},
Company: "Infosys",
Salary: 85000,
Designation: "Developer",
Age: 67,
Expertise: ['Mongodb', 'Mysql', 'Cassandra', 'Farming'],
DOB: new Date("1957-04-28"),
Email: "himanshu.p@infosys.com",
Contact: 9972410425,
Address: [{PAddr: "NDB, Maharashtra"}, {LAddr: "Camp, Pune", Pin_code: 411001}]
}
])
Queries
- Creates a new document if no document in the employee collection contains
{Designation: "Tester", Company_name: "TCS", Age: 25}
db.Employee.updateOne(
{Designation: "Tester", Company: "TCS", Age: 25},
{ $setOnInsert: {
Name: {FName: "Karan", LName: "Salvi"},
Salary: 67500,
Expertise: ['Blockchain', 'C++', 'Python', 'Fishing'],
DOB: new Date("1999-11-01"),
Email: "karan.s@tcs.com",
Contact: 9972410424,
Address: [{PAddr: "Kolhapur, Maharashtra"}, {LAddr: "Viman Nagar, Pune", Pin_code: 411014}]
}
},
{ upsert: true }
)
- Finds all employees working with Company_name: "TCS" and increase their salary by 2000.
db.Employee.updateMany(
{ Company: "TCS" },
{ $inc: { Salary: 2000 } }
)
- Matches all documents where the value of the field Address is an embedded document that contains only the field city with the value "Pune" and the field Pin_code with the value "411001".
db.Employee.find(
{ $or: [
{
"Address.Pin_code": 411001,
"Address.LAddr": { $regex: /Pune/i }
},
{
"Address.Pin_code": 411001,
"Address.PAddr": { $regex: /Pune/i }
}
]
}
)
- Find employee details who are working as "Developer" or "Tester".
db.Employee.find(
{ $or: [
{ Designation: "Developer" },
{ Designation: "Tester" }
]
}
)
- Drop Single documents where Designation="Developer"
db.Employee.deleteMany( { Designation: "Developer" } )
- Count number of documents in employee collection.
db.Employee.countDocuments();