MongoDB InsertData

From mi-linux
Jump to navigationJump to search

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

Inserting data

The format for the INSERT command is:

 db.collectionName.insert( 
  {
    key_1: 'value1',
    key_n: valueN
  }
 )

Note:

  • character and date values must be enclosed in matching single (') or double quotes (").
  • numeric values do not need quotes.
  • key/value pairs are comma-separated (no comma needed after the last pair)
  • each record is enclosed in curly brackets: {}

Department Data

The following examples will create a dept collection that will represent the DEPT table seen in the Oracle Sample Data. We will also include an object id (_id) for each record.

Department 10

Add department 10:

db.dept.insert(
{
   _id: 10,
   deptno: 10,
   dname:  "ACCOUNTING",
   loc:    "NEW YORK"
})

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

 WriteResult({ "nInserted" : 1 })

Department 20

Next add department 20:

db.dept.insert(
{
   _id: 20,
   deptno: 20,
   dname:  "RESEARCH",
   loc:    "DALLAS"
})

Department 40

Next department 40:

db.dept.insert(
{
   _id: 40,
   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: ()
    • a collection uses 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"

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


Employee data

The following examples will create a emp collection that will represent the EMP table seen in the Oracle Sample Data.

No object id (_id) is included this time, so you can compare the previous examples against the object id generated automatically in the documents below.

More than one record can be added at a time. The following examples will add several employees for each department.

Department 10 Employees

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

This time the results returned will be along the lines of:

 BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 3,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]

Department 20 Employees

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

Date data types

Dates have been included in the above:

  • 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.2

  • Try and add the employees for Department 30. Remember this time, some employees will have a commission (COMM)

Next Step

Querying the collection