Saturday, September 20, 2014

MongoDB CRUD Operations

       MongoDB CRUD stands for Create, Read, Update, Delete. MongoDB provides rich semantic to communicate with the database. MongoDB CRUD operations are much similar to SQL create,select,update and delete operations. If you already work with SQL you will find it very easy to understand and if your not then still you will find it very easy! OK, before moving forward to CRUD operation we have to understand how MongoDB stores data. As we know MongoDB is document oriented database it stores the data in the form of documents.
      So no rows and columns. It uses JSON(JavaScript Object Notation) like format to store data. Formally, MongoDB documents are BSON documents. BSON is a binary representation of JSON with additional type information. following image is example of MongoDB document.

     Above document shows fields and values which is much similar to the relational database table but MongoBD uses dynamic schema means you not need to specify datatype, fields before entering data into database such as relational database management system. Following image is example of tabular database.
 In MongoDB there are collections instead of table. In MongoDB database contains number of collections MongoDB stores all the documents in collection. Collection is a group of related documents that have a set of shared common indexes.

Now lets see MongoDB CRUD operations, Mainly include MongoDB read operation and Write operation. It contains some important points such as Cursor, query optimization and distributed queries but we will perform simple operations first for better understanding.
    We will perform the tasks in following order :
  1. Create 
  2. Insert 
  3. Read 
  4. Update 
  5. remove
       Before start performing this operations we have to setup environment means making connection between "mongod" server and "mongo" client. If you don't know how to startup mongo shell then read my previous blog "Downloading and installing MongoDB on windows" 

1. Create:
   lets start from creating database in MongoDB. Now what you have to do is just enter following command on mongo shell,
          use databasename
        use blogdata 
   Database is not created unless you not inserting documents in it.

2. Insert:
     To write into database following syntax is used,
             db.collectionname.insert({ document to be inserted});

      You can use any other folder name instead of "db" if you want.You don't have to create collection separately. It will automatically get created.

        To see the document that you have inserted run this command "db.collectionname.find()", "collectionname" should be the same which you have used earlier to insert document.

  3. Read:
           To read data from the database following command is used,
    By using this command documents will get displayed, you can be more specific by writing some criteria in find(), by default it will display all documents that contains in collection. But if you want to get specific document then Mongo provides way to write more optimized query you can use :

  • Limit the cursor means you can limit the number of result you get which matches criteria.
  • Can add projections means you can specify which fields you want in result.
  • Can add query criteria 

     This query returns documents in which age is greater than 18. It will display only name and address field because it is specified as "1" if field is "0" then mongo does not display that fields in result. Look at following SQL query which gives same result as mongo query for more better understanding.

    4. Update: 
           Update operation is used to modify the documents,
                  db.collectionname.update({ criteria})
            Following query will update the document field "status" as "A" where field "age" has value greater than "18".

     Following SQL query gives the same result as mongo.

   5. Remove: 
        Remove operation is used  to delete documents from database,
         Following query will remove the documents where "status" field is "D".

   See the SQL query for same operation,