MongoDB
Outline
 Introduction
 Overview of MongoDB’s Documents, Collections and Databases
 Comparison of RDBMS and MongoDB
 More on ObjectID
 MongoDB Datatypes
 Document Sample
 MongoDB Advantages and where to use it
 Create and Drop for Collections, Documents and Databases
 CRUD Operations for Documents
 Relations in MongoDB
 Projection
 Limiting, Sorting and Indexing in MongoDB
 Replication and Sharding in Mongo DB
 Companies that use MongoDB
MongoDB is an open-source document database
and leading NoSQL database. MongoDB is written
mostly in C++.
Released in 2009
Initial Release
Document Based
Types of NoSQL Databases:
• Document-Based
• Key-value stores
• Wide Column
• Graph
NoSQL Humongous
Scalable & Reliable
Cross-Platform
Available on Different Platforms
Overview
 Database
Database is a physical container for collections. Each database gets its own set of
files on the file system. A single MongoDB server typically has multiple databases.
 Collection
Collection is a group of MongoDB documents. It is the equivalent of an RDBMS
table. A collection exists within a single database. Collections do not enforce a
schema. Documents within a collection can have different fields. Typically, all
documents in a collection are of similar or related purpose.
 Document
A document is a set of key-value pairs. Documents have dynamic schema.
Dynamic schema means that documents in the same collection do not need to
have the same set of fields or structure, and common fields in a collection's
documents may hold different types of data.
RDBMS vs MongoDB
RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key Primary Key (Default key _id provided
by MongoDB itself)
Database Server and Client
mysqld/Oracle mongod
mysql/sqlplus mongo
Advantages
 Schema less − MongoDB is a document database in which one collection holds
different documents. Number of fields, content and size of the document can
differ from one document to another.
 Structure of a single object is clear.
 No complex joins.
 Deep query-ability. MongoDB supports dynamic queries on documents using a
document-based query language that's nearly as powerful as SQL.
 Tuning.
 Ease of scale-out − MongoDB is easy to scale.
 Uses internal memory for storing the (windowed) working set, enabling faster
access of data.
Why MongoDB?
 Document Oriented Storage − Data is stored in the form of JSON style
documents.
 Index on any attribute
 Replication and high availability
 Auto-Sharding
 Rich queries
 Fast in-place updates
Where to Use MongoDB?
 Big Data
 Content Management and Delivery
 Mobile and Social Infrastructure
 User Data Management
 Data Hub
Sample Document
{
"_id" : ObjectId("5ecb9ea70403c0aa6001b4a2"),
"brand" : "BMW",
"model" : "X5",
"tier" : "B",
"max_speed" : 220,
"color" : "Black",
"airbags" : [
"front-seats",
"back-seats",
"other places"
]
}
_id is 12 bytes hexadecimal number
unique for every document in a
collection. You can provide it
yourself too!
ObjectID
 An ObjectId is a 12-byte BSON type having the following structure
 Generate By mongoDB
>newObjectId = ObjectId()  ObjectId("5349b4ddd2781d08c09890f3")
 Generate By us
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
Datatypes
 String − This is the most commonly used datatype to store the data. String in MongoDB must be UTF-8 valid.
 Integer − This type is used to store a numerical value. Integer can be 32 bit or 64 bit depending upon your server.
 Boolean − This type is used to store a boolean (true/ false) value.
 Double − This type is used to store floating point values.
 Min/ Max keys − This type is used to compare a value against the lowest and highest BSON elements.
 Arrays − This type is used to store arrays or list or multiple values into one key.
 Timestamp − ctimestamp. This can be handy for recording when a document has been modified or added.
 Object − This datatype is used for embedded documents.
 Null − This type is used to store a Null value.
 Symbol − This datatype is used identically to a string; however, it's generally reserved for languages that use a specific
symbol type.
 Date − This datatype is used to store the current date or time in UNIX time format. You can specify your own date time by
creating object of Date and passing day, month, year into it.
 Object ID − This datatype is used to store the document’s ID.
 Binary data − This datatype is used to store binary data.
 Code − This datatype is used to store JavaScript code into the document.
 Regular expression − This datatype is used to store regular expression.
Create & Drop Database
 MongoDB use DATABASE_NAME is used to create database. The command will
create a new database if it doesn't exist, otherwise it will return the existing
database.
 MongoDB db.dropDatabase() command is used to drop a existing database.
Example:
use divarDB
db.dropDatabase()
 If you want to check your databases list, use the command show dbs.
Create Collections
 MongoDB db.createCollection(name, options) is used to create collection.
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800,
max : 10000 } )
Parameter Type
Name String
Options Document
Field Type Description
capped Boolean
If true, enables a capped collection. Capped
collection is a fixed size collection that
automatically overwrites its oldest entries when
it reaches its maximum size. If you specify true,
you need to specify size parameter also.
autoIn
dexId
Boolean
If true, automatically create index on _id fields.
size number
Specifies a maximum size in bytes for a capped
collection. If capped is true, then you need to
specify this field also.
max number
Specifies the maximum number of documents
allowed in the capped collection.
Drop Collections
 MongoDB's db.collection.drop() is used to drop a collection from the
database.
 show collections is used to show all collections in the current
Example:
db.mycollection.drop()
Insert Document
 To insert data into MongoDB collection, you need to use
MongoDB's insert() or save() method.
 If you need to insert only one document you can use insertOne() method.
 You can insert multiple documents using the insertMany() method. To this method you
need to pass an array of documents.
Example:
db.stuff.insert({ title: "MongoDB Insert Docs", description: "MongoDB is no sql database",
tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
db.presenters.insertMany([
{
First_Name: “Shayan",
Last_Name: “Daneshvar",
},
{
First_Name: “Hashem",
Last_Name: “Pourallahverdi",
}])
Query Document
how to query document from MongoDB collection.
 The find() Method
 The pretty() Method
 The findOne() method
 AND
 OR
 NOR
 NOT
Operation Syntax Example RDBM S Equivalent
Equality {<key>:{$eg;<value>}} db.mycol.find({"by":"kntu"}).pretty() where by = 'kntu'
Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
Less Than
Equals
{<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
Greater Than
Equals
{<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50
Values in an
array
{<key>:{$in:[<value1>,
<value2>,……<valueN>]
}}
db.mycol.find({"name":{$in:["Raj","Ram","Raghu"])
.pretty()
Where name matches any of the
value in :["Raj", "Ram", "Raghu"]
Values not in
array
{<key>:{$nin:<value>}} db.mycol.find({"name":{$nin:["Ramu","Raghav"]}})
.pretty()
Where name values is not in the
array :["Ramu", "Raghav"] or,
doesn’t exist at all
Query Document
 Example :
>db.mycol.find($and:{"likes": {$gt:10}, $or: [{"by": “kntu"},
{"title": "MongoDB Overview"}]}).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": “kntu",
"url": "http://kntu.ac.ir",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100“
}
Update Document
 MongoDB's update() and save() methods are used to update document into a
collection.
 update() Vs save()
 >db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
 >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
 findOneAndUpdate()
 updateOne()
 updateMany(<filter>, <update>)
Delete Document
 MongoDB's remove() method accepts two parameters. One is deletion criteria
and second is justOne flag.
 deletion criteria − (Optional) deletion criteria according to documents will be
removed.
 justOne − (Optional) if set to true or 1, then remove only one document.
Relationships
 Embedded approach.
 Referenced approach.
Projection
 In MongoDB, projection means selecting only the necessary data rather than
selecting whole of the data of a document.
 The find() Method
 >db.COLLECTION_NAME.find({},{KEY:1})
Example :
{_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"},
{_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"},
{_id : ObjectId("507f191e810c19729de860e3"), title: “Redis Overview"}
>db.mycol.find({},{"title":1,_id:0})
{"title":"MongoDB Overview"} {"title":"NoSQL Overview"} {"title":“Redis Overview"}
_id field is always displayed while executing find() method, if you don't want this field, then you
need to set it as 0.
Limiting Records
 To limit the records in MongoDB we use two method :
 The Limit() Method
 Skip() Method
 These methods accepts one number type argument, which is the number of
documents that you want to be displayed or passed.
Example :
{_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"},
{_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"},
{_id : ObjectId("507f191e810c19729de860e3"), title: “Redis Overview"}
>db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1)
{"title":"NoSQL Overview"}
Sorting Records
 The method accepts a document containing a list of fields along with their
sorting order. To specify sorting order 1 and -1 are used. 1 is used for
ascending order while -1 is used for descending order.
 The sort() Method
 >db.COLLECTION_NAME.find().sort({KEY:1})
Indexing
 Indexes support the efficient resolution of queries. Without indexes, MongoDB
must scan every document of a collection to select those documents that
match the query statement.
 The createIndex() Method >db.COLLECTION_NAME.createIndex({KEY:1/-1})
The method has some other parameters and I passed.
 The dropIndex() method >db.COLLECTION_NAME.dropIndex({KEY:1})
 The getIndexes() method : returns the description of all the indexes in the
collection.
Aggregation
 Aggregations operations process data records and return computed results.
 In SQL count(*) and with group by is an equivalent of MongoDB aggregation.
 aggregate() Method
 >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
 $sum,$avg,$min,$max,$first,$last
 $push : Inserts the value to an array in the resulting document.
 $addToSet : Inserts the value to an array in the resulting
document but does not create duplicates.
Aggregation
Following are the possible stages in aggregation framework
 $project − Used to select some specific fields from a collection.
 $match − This is a filtering operation and thus this can reduce the amount
of documents that are given as input to the next stage.
 $group − This does the actual aggregation as discussed above.
 $sort − Sorts the documents.
 $skip − With this, it is possible to skip forward in the list of documents for
a given amount of documents.
 $limit − This limits the amount of documents to look at, by the given
number starting from the current positions.
 $unwind − This is used to unwind document that are using arrays. When
using an array, the data is kind of pre-joined and this operation will be
undone with this to have individual documents again. Thus with this stage
we will increase the amount of documents for the next stage.
Replication
 is the process of synchronizing data across multiple servers.
 provides redundancy and increases data availability with multiple copies of data
on different database servers.
 protects a database from the loss of a single server.
 allows you to recover from hardware failure and service interruptions.
 MongoDB achieves replication by the use of replica set. A replica set is a group
of mongod instances that host the same data set.
 Replica Set Features
 A cluster of N nodes
 Any one node can be primary
 All write operations go to primary
 Automatic failover--a method of protecting computer system
 Automatic recovery
 Consensus election of primary
Sharding
 is the process of storing data records across multiple machines and it is
MongoDB's approach to meeting the demands of data growth.
 solves the problem with horizontal scaling.
 Why Sharding?
 In replication, all writes go to master node
 Latency sensitive queries still go to master
 Single replica set has limitation of 12 nodes
 Memory can't be large enough when active dataset is big
 Local disk is not big enough
 Vertical scaling is too expensive
Sharding in MongoDB
 Shards − Shards are used to store data.
 Config Servers − Config servers store the cluster's metadata. This data
contains a mapping of the cluster's data set to the shards. The query
router uses this metadata to target operations to specific shards.
 Query Routers − Query routers are basically mongo instances,
interface with client applications and direct operations to the
appropriate shard.
Who is using MongoDB?

Introduction to MongoDB

  • 1.
  • 2.
    Outline  Introduction  Overviewof MongoDB’s Documents, Collections and Databases  Comparison of RDBMS and MongoDB  More on ObjectID  MongoDB Datatypes  Document Sample  MongoDB Advantages and where to use it  Create and Drop for Collections, Documents and Databases  CRUD Operations for Documents  Relations in MongoDB  Projection  Limiting, Sorting and Indexing in MongoDB  Replication and Sharding in Mongo DB  Companies that use MongoDB
  • 3.
    MongoDB is anopen-source document database and leading NoSQL database. MongoDB is written mostly in C++. Released in 2009 Initial Release Document Based Types of NoSQL Databases: • Document-Based • Key-value stores • Wide Column • Graph NoSQL Humongous Scalable & Reliable Cross-Platform Available on Different Platforms
  • 4.
    Overview  Database Database isa physical container for collections. Each database gets its own set of files on the file system. A single MongoDB server typically has multiple databases.  Collection Collection is a group of MongoDB documents. It is the equivalent of an RDBMS table. A collection exists within a single database. Collections do not enforce a schema. Documents within a collection can have different fields. Typically, all documents in a collection are of similar or related purpose.  Document A document is a set of key-value pairs. Documents have dynamic schema. Dynamic schema means that documents in the same collection do not need to have the same set of fields or structure, and common fields in a collection's documents may hold different types of data.
  • 5.
    RDBMS vs MongoDB RDBMSMongoDB Database Database Table Collection Tuple/Row Document column Field Table Join Embedded Documents Primary Key Primary Key (Default key _id provided by MongoDB itself) Database Server and Client mysqld/Oracle mongod mysql/sqlplus mongo
  • 6.
    Advantages  Schema less− MongoDB is a document database in which one collection holds different documents. Number of fields, content and size of the document can differ from one document to another.  Structure of a single object is clear.  No complex joins.  Deep query-ability. MongoDB supports dynamic queries on documents using a document-based query language that's nearly as powerful as SQL.  Tuning.  Ease of scale-out − MongoDB is easy to scale.  Uses internal memory for storing the (windowed) working set, enabling faster access of data.
  • 7.
    Why MongoDB?  DocumentOriented Storage − Data is stored in the form of JSON style documents.  Index on any attribute  Replication and high availability  Auto-Sharding  Rich queries  Fast in-place updates
  • 8.
    Where to UseMongoDB?  Big Data  Content Management and Delivery  Mobile and Social Infrastructure  User Data Management  Data Hub
  • 9.
    Sample Document { "_id" :ObjectId("5ecb9ea70403c0aa6001b4a2"), "brand" : "BMW", "model" : "X5", "tier" : "B", "max_speed" : 220, "color" : "Black", "airbags" : [ "front-seats", "back-seats", "other places" ] } _id is 12 bytes hexadecimal number unique for every document in a collection. You can provide it yourself too!
  • 10.
    ObjectID  An ObjectIdis a 12-byte BSON type having the following structure  Generate By mongoDB >newObjectId = ObjectId()  ObjectId("5349b4ddd2781d08c09890f3")  Generate By us >myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
  • 11.
    Datatypes  String −This is the most commonly used datatype to store the data. String in MongoDB must be UTF-8 valid.  Integer − This type is used to store a numerical value. Integer can be 32 bit or 64 bit depending upon your server.  Boolean − This type is used to store a boolean (true/ false) value.  Double − This type is used to store floating point values.  Min/ Max keys − This type is used to compare a value against the lowest and highest BSON elements.  Arrays − This type is used to store arrays or list or multiple values into one key.  Timestamp − ctimestamp. This can be handy for recording when a document has been modified or added.  Object − This datatype is used for embedded documents.  Null − This type is used to store a Null value.  Symbol − This datatype is used identically to a string; however, it's generally reserved for languages that use a specific symbol type.  Date − This datatype is used to store the current date or time in UNIX time format. You can specify your own date time by creating object of Date and passing day, month, year into it.  Object ID − This datatype is used to store the document’s ID.  Binary data − This datatype is used to store binary data.  Code − This datatype is used to store JavaScript code into the document.  Regular expression − This datatype is used to store regular expression.
  • 12.
    Create & DropDatabase  MongoDB use DATABASE_NAME is used to create database. The command will create a new database if it doesn't exist, otherwise it will return the existing database.  MongoDB db.dropDatabase() command is used to drop a existing database. Example: use divarDB db.dropDatabase()  If you want to check your databases list, use the command show dbs.
  • 13.
    Create Collections  MongoDBdb.createCollection(name, options) is used to create collection. db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } ) Parameter Type Name String Options Document Field Type Description capped Boolean If true, enables a capped collection. Capped collection is a fixed size collection that automatically overwrites its oldest entries when it reaches its maximum size. If you specify true, you need to specify size parameter also. autoIn dexId Boolean If true, automatically create index on _id fields. size number Specifies a maximum size in bytes for a capped collection. If capped is true, then you need to specify this field also. max number Specifies the maximum number of documents allowed in the capped collection.
  • 14.
    Drop Collections  MongoDB'sdb.collection.drop() is used to drop a collection from the database.  show collections is used to show all collections in the current Example: db.mycollection.drop()
  • 15.
    Insert Document  Toinsert data into MongoDB collection, you need to use MongoDB's insert() or save() method.  If you need to insert only one document you can use insertOne() method.  You can insert multiple documents using the insertMany() method. To this method you need to pass an array of documents. Example: db.stuff.insert({ title: "MongoDB Insert Docs", description: "MongoDB is no sql database", tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }) db.presenters.insertMany([ { First_Name: “Shayan", Last_Name: “Daneshvar", }, { First_Name: “Hashem", Last_Name: “Pourallahverdi", }])
  • 16.
    Query Document how toquery document from MongoDB collection.  The find() Method  The pretty() Method  The findOne() method  AND  OR  NOR  NOT Operation Syntax Example RDBM S Equivalent Equality {<key>:{$eg;<value>}} db.mycol.find({"by":"kntu"}).pretty() where by = 'kntu' Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50 Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50 Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50 Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50 Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50 Values in an array {<key>:{$in:[<value1>, <value2>,……<valueN>] }} db.mycol.find({"name":{$in:["Raj","Ram","Raghu"]) .pretty() Where name matches any of the value in :["Raj", "Ram", "Raghu"] Values not in array {<key>:{$nin:<value>}} db.mycol.find({"name":{$nin:["Ramu","Raghav"]}}) .pretty() Where name values is not in the array :["Ramu", "Raghav"] or, doesn’t exist at all
  • 17.
    Query Document  Example: >db.mycol.find($and:{"likes": {$gt:10}, $or: [{"by": “kntu"}, {"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": “kntu", "url": "http://kntu.ac.ir", "tags": ["mongodb", "database", "NoSQL"], "likes": "100“ }
  • 18.
    Update Document  MongoDB'supdate() and save() methods are used to update document into a collection.  update() Vs save()  >db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)  >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})  findOneAndUpdate()  updateOne()  updateMany(<filter>, <update>)
  • 19.
    Delete Document  MongoDB'sremove() method accepts two parameters. One is deletion criteria and second is justOne flag.  deletion criteria − (Optional) deletion criteria according to documents will be removed.  justOne − (Optional) if set to true or 1, then remove only one document.
  • 20.
  • 21.
    Projection  In MongoDB,projection means selecting only the necessary data rather than selecting whole of the data of a document.  The find() Method  >db.COLLECTION_NAME.find({},{KEY:1}) Example : {_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"}, {_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"}, {_id : ObjectId("507f191e810c19729de860e3"), title: “Redis Overview"} >db.mycol.find({},{"title":1,_id:0}) {"title":"MongoDB Overview"} {"title":"NoSQL Overview"} {"title":“Redis Overview"} _id field is always displayed while executing find() method, if you don't want this field, then you need to set it as 0.
  • 22.
    Limiting Records  Tolimit the records in MongoDB we use two method :  The Limit() Method  Skip() Method  These methods accepts one number type argument, which is the number of documents that you want to be displayed or passed. Example : {_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"}, {_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"}, {_id : ObjectId("507f191e810c19729de860e3"), title: “Redis Overview"} >db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1) {"title":"NoSQL Overview"}
  • 23.
    Sorting Records  Themethod accepts a document containing a list of fields along with their sorting order. To specify sorting order 1 and -1 are used. 1 is used for ascending order while -1 is used for descending order.  The sort() Method  >db.COLLECTION_NAME.find().sort({KEY:1})
  • 24.
    Indexing  Indexes supportthe efficient resolution of queries. Without indexes, MongoDB must scan every document of a collection to select those documents that match the query statement.  The createIndex() Method >db.COLLECTION_NAME.createIndex({KEY:1/-1}) The method has some other parameters and I passed.  The dropIndex() method >db.COLLECTION_NAME.dropIndex({KEY:1})  The getIndexes() method : returns the description of all the indexes in the collection.
  • 25.
    Aggregation  Aggregations operationsprocess data records and return computed results.  In SQL count(*) and with group by is an equivalent of MongoDB aggregation.  aggregate() Method  >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)  $sum,$avg,$min,$max,$first,$last  $push : Inserts the value to an array in the resulting document.  $addToSet : Inserts the value to an array in the resulting document but does not create duplicates.
  • 26.
    Aggregation Following are thepossible stages in aggregation framework  $project − Used to select some specific fields from a collection.  $match − This is a filtering operation and thus this can reduce the amount of documents that are given as input to the next stage.  $group − This does the actual aggregation as discussed above.  $sort − Sorts the documents.  $skip − With this, it is possible to skip forward in the list of documents for a given amount of documents.  $limit − This limits the amount of documents to look at, by the given number starting from the current positions.  $unwind − This is used to unwind document that are using arrays. When using an array, the data is kind of pre-joined and this operation will be undone with this to have individual documents again. Thus with this stage we will increase the amount of documents for the next stage.
  • 27.
    Replication  is theprocess of synchronizing data across multiple servers.  provides redundancy and increases data availability with multiple copies of data on different database servers.  protects a database from the loss of a single server.  allows you to recover from hardware failure and service interruptions.  MongoDB achieves replication by the use of replica set. A replica set is a group of mongod instances that host the same data set.  Replica Set Features  A cluster of N nodes  Any one node can be primary  All write operations go to primary  Automatic failover--a method of protecting computer system  Automatic recovery  Consensus election of primary
  • 28.
    Sharding  is theprocess of storing data records across multiple machines and it is MongoDB's approach to meeting the demands of data growth.  solves the problem with horizontal scaling.  Why Sharding?  In replication, all writes go to master node  Latency sensitive queries still go to master  Single replica set has limitation of 12 nodes  Memory can't be large enough when active dataset is big  Local disk is not big enough  Vertical scaling is too expensive
  • 29.
    Sharding in MongoDB Shards − Shards are used to store data.  Config Servers − Config servers store the cluster's metadata. This data contains a mapping of the cluster's data set to the shards. The query router uses this metadata to target operations to specific shards.  Query Routers − Query routers are basically mongo instances, interface with client applications and direct operations to the appropriate shard.
  • 30.
    Who is usingMongoDB?