Skip to main content

MongoDB — Creating Documents — 1


Everything about creating documents in MongoDB

mongod --dbpath <path>

to change path to database

mongod -- logpath <path>

to change path to log file
mongodb config file

  • Create config file named mongod.cfg
  • Add the following to it

storage:
  dbPath: <path>
systemLog:
  destoination: file
  path: <file path>
  • mongod -f <path to config file>

mongod

For running MongoDB server

mongo

For running MongoDB shell

CRUD Operations

Create

insertOne()

db.collection.insertOne({field: "value"});

insertMany()

db.collection.insertOne([{field: "value"}, {field: "value"}]);

Ordered Insert in MongoDB

db.hobbies.insertMany([{_id: "yoga", name: "Yoga"}, {_id: "cooking", name: "Cooking"}, {_id: "hiking", name: "Hiking"}], {ordered: true})
{ordered: true} is the default behaviour of insert statements

Unordered Insert in MongoDB

If you want mongodb to continue trying to insert other documents even after one or more failing due to any reason, you must set ordered to false. See example below:
db.hobbies.insertMany([{_id: "yoga", name: "Yoga"}, {_id: "cooking", name: "Cooking"}, {_id: "hiking", name: "Hiking"}], {ordered: false})

WriteConcern

Setting Acknowledge to false

Setting acknowledge to false increases speed but the down side is that you don't get acknowledgement as well as _id if data is inserted successfully. What one can do is fetch data to check.

Example: Run the following statements in mongo shell

db.hobbies.insertOne({name: "Dancing"}, {writeConcern: {w: 0}})
db.hobbies.find().pretty()

Setting Acknowledge to false

This can be explicitly be done but is also the default behavior.

Example: Run the following statements in mongo shell

db.hobbies.insertOne({name: "Trekking"}, {writeConcern: {w: 1}})
db.hobbies.find().pretty()

Adding to Journal before Inserting to DB

Setting Journal to true

Setting journal to true slows down operation as data is first added to journal and from there it is added to db.
db.hobbies.insertOne({name: "Disco Dancing"}, {writeConcern: {w: 1, j: true}})
db.hobbies.find().pretty()

Setting Journal to false

This is the default behavior. So one need not explicitly mention but one can. Setting journal to false directly adds to db.
db.hobbies.insertOne({name: "Listening Music"}, {writeConcern: {w: 1, j: false}})
db.hobbies.find().pretty()

Set Timeout for Create Operation

Setting wtimeout milliseconds

Setting journal to true slows down operation as data is first added to journal and from there it is added to db. The following example sets timeout to 200 milliseconds.
db.hobbies.insertOne({name: "Playing Video Games"}, {writeConcern: {w: 1, j: true, wtimeout: 200}})
db.hobbies.find().pretty()

Not setting wtimeout

This is the default behavior. So one need not explicitly mention. The below example will wait for response even if it takes very long for acknowledgement.
db.hobbies.insertOne({name: "Playing Drums"}, {writeConcern: {w: 1, j: true}})
db.hobbies.find().pretty()
That is all about creating documents in MongoDB

Importing Data from JSON File

One can import data from json files using the following command in terminal.


mongoimport data.json -d <database name> -c <collection name> --jsonArray --drop

mongoimport is used to import data from a json file. after mongoimport we mention the file name followd by -d and database name, fllowed by -c and collection name. --jsonArray is mentioned when there are more than one records in json file. --drop is mentioned when we want to instruct to replace entire collection with content from the file. If --drop is not mentioned, records are simply appended.

Comments

Popular posts from this blog

Python - List - Append, Count, Extend, Index, Insert, Pop, Remove, Reverse, Sort

🐍 Advance List List is widely used and it's functionalities are heavily useful. Append Adds one element at the end of the list. Syntax list1.append(value) Input l1 = [1, 2, 3] l1.append(4) l1 Output [1, 2, 3, 4] append can be used to add any datatype in a list. It can even add list inside list. Caution: Append does not return anything. It just appends the list. Count .count(value) counts the number of occurrences of an element in the list. Syntax list1.count(value) Input l1 = [1, 2, 3, 4, 3] l1.count(3) Output 2 It returns 0 if the value is not found in the list. Extend .count(value) counts the number of occurrences of an element in the list. Syntax list1.extend(list) Input l1 = [1, 2, 3] l1.extend([4, 5]) Output [1, 2, 3, 4, 5] If we use append, entire list will be added to the first list like one element. Extend, i nstead of considering a list as one element, it joins the two lists one after other. Append works in the following way. Input l1 = [1, 2, 3] l1.append([4, 5]) Output...

Difference between .exec() and .execPopulate() in Mongoose?

Here I answer what is the difference between .exec() and .execPopulate() in Mongoose? .exec() is used with a query while .execPopulate() is used with a document Syntax for .exec() is as follows: Model.query() . populate ( 'field' ) . exec () // returns promise . then ( function ( document ) { console . log ( document ); }); Syntax for .execPopulate() is as follows: fetchedDocument . populate ( 'field' ) . execPopulate () // returns promise . then ( function ( document ) { console . log ( document ); }); When working with individual document use .execPopulate(), for model query use .exec(). Both returns a promise. One can do without .exec() or .execPopulate() but then has to pass a callback in populate.

683 K Empty Slots

  Approach #1: Insert Into Sorted Structure [Accepted] Intuition Let's add flowers in the order they bloom. When each flower blooms, we check it's neighbors to see if they can satisfy the condition with the current flower. Algorithm We'll maintain  active , a sorted data structure containing every flower that has currently bloomed. When we add a flower to  active , we should check it's lower and higher neighbors. If some neighbor satisfies the condition, we know the condition occurred first on this day. Complexity Analysis Time Complexity (Java):  O(N \log N) O ( N lo g N ) , where  N N  is the length of  flowers . Every insertion and search is  O(\log N) O ( lo g N ) . Time Complexity (Python):  O(N^2) O ( N 2 ) . As above, except  list.insert  is  O(N) O ( N ) . Space Complexity:  O(N) O ( N ) , the size of  active . Approach #2: Min Queue [Accepted] Intuition For each contiguous block ("window") of  k  po...