Difference between revisions of "MongoDB Answers"
Line 44: | Line 44: | ||
<pre style="color:blue"> | <pre style="color:blue"> | ||
− | db.emp.insert( [ | + | db.emp.insert( [ |
{ | { | ||
empno: 7499, | empno: 7499, | ||
Line 50: | Line 50: | ||
job: "SALESMAN", | job: "SALESMAN", | ||
mgr: 7698, | mgr: 7698, | ||
− | + | hiredate: new Date('1995-02-20'), | |
sal: 1600, | sal: 1600, | ||
comm: 300, | comm: 300, | ||
Line 60: | Line 60: | ||
job: "MANAGER", | job: "MANAGER", | ||
mgr: 7839, | mgr: 7839, | ||
− | hiredate: | + | hiredate: new Date ('1981-05-01'), |
sal: 2850, | sal: 2850, | ||
deptno: 30 | deptno: 30 | ||
Line 69: | Line 69: | ||
job: "SALESMAN", | job: "SALESMAN", | ||
mgr: 7698, | mgr: 7698, | ||
− | hiredate: | + | hiredate: new Date('1993-09-28'), |
sal: 1250, | sal: 1250, | ||
comm: 1400, | comm: 1400, | ||
Line 79: | Line 79: | ||
job: "SALESMAN", | job: "SALESMAN", | ||
mgr: 7698, | mgr: 7698, | ||
− | hiredate: | + | hiredate: new Date('1981-09-08'), |
sal: 1500, | sal: 1500, | ||
comm: 0, | comm: 0, | ||
Line 89: | Line 89: | ||
job: "SALESMAN", | job: "SALESMAN", | ||
mgr: 7698, | mgr: 7698, | ||
− | hiredate: | + | hiredate: new Date('1994-02-22'), |
sal: 1250, | sal: 1250, | ||
comm: 500, | comm: 500, |
Revision as of 11:26, 13 November 2017
Main Page >> MongoDB >>MongoDB Workbook >> Exercise Answers
You should only look at the answers once you have attempted them yourself!
Answers to Section 2
Exercise 2.1
- Compare how you added the above data and how it differs from INSERT records in a relational database
A SQL INSERT statement for department 30 would be:
INSERT INTO dept(deptno, dname, loc) VALUES (30,'SALES','CHICAGO');
Apart from the syntax differences, you could get away with not defining the field names again, for example, this would work too:
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
This is because the table has already been defined, so there is a well defined schema in existence. MongoDB is schema-less, so you need to define some sort of structure as the documents are added.
- Try and add Department 30
db.dept.insert( { _id: 30, deptno: 30, dname: "SALES", loc: "CHICAGO" })
Exercise 2.2
- Try and add the employees for Department 30. Remember this time, some employees will have a commission (COMM)
db.emp.insert( [ { empno: 7499, ename: "ALLEN", job: "SALESMAN", mgr: 7698, hiredate: new Date('1995-02-20'), sal: 1600, comm: 300, deptno: 30 }, { empno: 7698, ename: "BLAKE", job: "MANAGER", mgr: 7839, hiredate: new Date ('1981-05-01'), sal: 2850, deptno: 30 }, { empno: 7654, ename: "MARTIN", job: "SALESMAN", mgr: 7698, hiredate: new Date('1993-09-28'), sal: 1250, comm: 1400, deptno: 30 }, { empno: 7844, ename: "TURNER", job: "SALESMAN", mgr: 7698, hiredate: new Date('1981-09-08'), sal: 1500, comm: 0, deptno: 30 }, { empno: 7521, ename: "WARD", job: "SALESMAN", mgr: 7698, hiredate: new Date('1994-02-22'), sal: 1250, comm: 500, deptno: 30 } ])
Answers to Section 3
Exercise 3.1
- Compare how you added the above data and how it differs from INSERT records in a relational database
Think about how this differs from using INSERT statements in Oracle to add the data. An SQL INSERT generally only insert one record at a time to one table.
- Try and add Department 30. Note it has some values for the comm field.
db.deptCollection.insert( { deptno: 30, dname: 'SALES', loc: 'CHICAGO', employees: [ { empno: 7499, ename: 'ALLEN', job: 'SALESMAN', mgr: 7698, hiredate: new Date('1995-02-20'), sal: 1600, comm: 300 }, { empno: 7698, ename: 'BLAKE', job: 'MANAGER', mgr: 7839, hiredate: new Date('1981-05-01'), sal: 2850 }, { empno: 7900, ename: 'JAMES', job: 'CLERK', mgr: 7698, hiredate: new Date('1981-12-03'), sal: 1600 }, { empno: 7654, ename: 'MARTIN', job: 'SALESMAN', mgr: 7698, hiredate: new Date('1993-09-28'), sal: 1250, comm: 1400 }, { empno: 7844, ename: 'TURNER', job: 'SALESMAN', mgr: 7698, hiredate: new Date('1981-09-08'), sal: 1500, comm: 0 }, { empno: 7521, ename: 'WARD', job: 'SALESMAN', mgr: 7698, hiredate: new Date('1994-02-22'), sal: 1250, comm: 500 } ] })
Exercise 3.2
2.2.1 Update the name of department 40 to: COMPUTING
db.deptCollection.update({deptno:40}, {$set: {dname: 'COMPUTING'}})
2.2.1 Update the salary of employee number 7788 in department 20 to 3500
db.deptCollection.update ( { deptno: 20 , "employees.empno": 7788}, { $set: {"employees.$.sal" : 3500} } )
Always check that your update has worked. As a clue, the system should output a WriteResult, telling you how many records were updated:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Next Step
Return to the Workbook.