MongoDB InsertNestedData

From mi-linux
Revision as of 13:37, 10 November 2017 by Cm1958 (talk | contribs) (Created page with "Main Page >> MongoDB >>MongoDB Workbook >> Insert Data == Inserting data == For this exercise we are going to nest the Employee details...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Main Page >> MongoDB >>MongoDB Workbook >> Insert Data

Inserting data

For this exercise we are going to nest the Employee details within the Department, rather than having two separate collections as seen in the previous section.

The format for the INSERT command is still the same, but this time one of our keyField values will be an array to hold the employee details:

 db.collectionName.insert( 
  {
    keyField_1: 'value1',
    keyField_n: valueN,

  }
 )

Note:

  • character and date values must be enclosed in matching single (') or double quotes (").
  • numeric values do not need quotes.
  • keyFields are comma-separated and the value can be a nested document or array.
  • each record is enclosed in curly brackets: {}

Department 10

The following example will create a insert data representing the DEPT/EMP tables seen in the Oracle Sample Data.

Add department 10 and it's employees:

db.deptCollection.insert( 
 {
    deptno: 10, 
    dname: 'ACCOUNTING',
    loc: 'NEW YORK',
    employees: [
     {
        empno: 7782,
        ename: 'CLARK',	
        job: 'MANAGER',
        mgr: 7839, 	
        hiredate: new Date('1989-06-09'),
        sal: 2450
     },
     {
        empno:7839,
        ename: 'KING',
        job: 'PRESIDENT',
        hiredate: new Date('1980-11-17'),
        sal: 5000
      },
      {
        empno: 7934,
        ename: 'MILLER',
        job: 'CLERK',
        mgr: 7782,
        hiredate: new Date('1985-01-23'),
        sal: 1300
      }
    ]
   } 
 )

Assuming you have no error messages, the system should respond with:

 WriteResult({ "nInserted" : 1 })

Department 20

Next add department 20:

db.deptCollection.insert( 
 {
  deptno: 20,
  dname: 'RESEARCH',
  loc: 'DALLAS',
  employees: [
   {
      empno: 7876,
      ename: 'ADAMS',
      job: 'CLERK',
      mgr: 7788,
      hiredate: new Date(),
      sal: 1100
   },
   {
      empno: 7902,
      ename: 'FORD',
      job: 'ANALYST',
      mgr: 7566,
      hiredate: new Date('1991-12-03'),
      sal: 3000
   },
   {
      empno: 7066,
      ename: 'JONES',
      job: 'MANAGER',
      mgr: 7839,
      hiredate: new Date('1991-04-02'),
      sal: 2975
   },
   {
      empno: 7788,
      ename: 'SCOTT',
      job: 'ANALYST',
      mgr: 7566,
      hiredate: new Date('2015-10-16'),
      sal: 3000
   }    
  ]
 }
)

Department 40

Next department 40, which has no employees currently:

db.deptCollection.insert( 
 {
   deptno: 40,
   dname: 'OPERATIONS',
   loc: 'BOSTON'
 }
)

Things to note

If you are getting errors, check carefully that:

  • every opening bracket has an appropriate closing bracket:
    • the insert statement uses round brackets: ()
    • an array uses square brackets: []
    • a collection uses curly brackets: {}
      • each element in a nested collection will also use curly brackets
  • each key:value pair are separated by commas, except for the last item
  • strings are enclosed in single or double quotes, e.g., 'myString', or "myString"
  • date strings are enclosed in single/double quotes and the format is 'yyyy-mm-dd' e.g., Date('2016-10-10')
  • use the Date() constructor to create a date datatype
  • date can also be a datetime, e.g., new Date("<yyyy-mm-ddThh:mm:ss>")
  • new Date() will return the current date

Exercise 2.1

  • Compare how you added the above data and how it differs from INSERT records in a relational database
  • Try and add Department 30. Note it has some values for the comm field.

Next Step

Querying the collection