MongoDB InsertData

From mi-linux
Revision as of 16:55, 11 November 2017 by Cm1958 (talk | contribs) (→‎Object IDs)
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"
})

Object IDs

Object ids can be used to provide a unique identifying value a collection, that is equivalent to a primary key field. They are either system generated and are guaranteed to be unique, or can be created by the user as seen above. If user defined the user must provide unique values within the collection.

For example, try and add another document with the id of 10:

db.dept.insert(
 {
   _id: 10,
   deptno: 50,
   dname:  "TEST",
   loc:    "WOLVERHAMPTON"
 })

You should get an error message along the lines of: ...duplicate key error collection: dbYourStudentNumber.dept....'


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