MongoDB
A complete data framework

We offer a document-based, distributed database built to handle
the data of any application you're building.

Available on AWS, Azure, and Google Cloud.

MongoDB Atlas
Our database as a service

A multi-cloud database service available on AWS, Google Cloud, and Azure. Automated and secure, Atlas provides continuous availability, elastic scalability, and support with regulatory compliance.

Start with Atlas

MongoDB Realm
To build offline-first apps

MongoDB Realm's services and SDKs accelerate development of both mobile and web apps. Realm manages on-device data for mobile apps and automatically syncs to a backend.

Build with Realm

MongoDB Charts
For native data visualization

A modern data visualization tool that is integrated with the MongoDB data framework. It's the best way to create, share and embed visualizations of your data.

Start Charting

NEWEST FEATURES
THE DOCUMENT MODEL

As a programmer, you think in objects. Now your database does too.

MongoDB is a document database, which means it stores data in JSON-like documents. We believe this is the most natural way to think about data.
{
  "_id": "5cf0029caff5056591b0ce7d",
  "firstname": "Jane",
  "lastname": "Wu",
  "address": {
    "street": "1 Circle Rd",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90404"
  },
  "hobbies": ["surfing", "coding"]
}

Rich JSON Documents

  • The most natural and productive way to work with data.

  • Supports arrays and nested objects as values.

  • Allows for flexible and dynamic schemas.

> db.users.find({ "address.zip" : "90404" })
{ "_id": "5cf0029caff5056591b0ce7d", "firstname": "Jane", "lastname": "Wu", "address": { "zip": "90404" } }
{ "_id": "507f1f77bcf86cd799439011", "firstname": "Jon", "lastname": "Davis", "address": { "zip": "90404" } }
{ "_id": "5349b4ddd2781d08c09890f3", "firstname": "Jim", "lastname": "White", "address": { "zip": "90404" } }
{ "_id": "5bf142459b72e12b2b1b2cd", "firstname": "Jeff", "lastname": "Taylor", "address": { "zip": "90404" } }
{ "_id": "5cf003283b23d04a40d5f88a", "firstname": "Jerry", "lastname": "Miller", "address": { "zip": "90404" } }
{ "_id": "5bf142459b72e12b2b1b2cd", "firstname": "Jai", "lastname": "Williams", "address": { "zip": "90404" } }
{ "_id": "5cf0036deaa1742dd225ea35", "firstname": "Jess", "lastname": "Johnson", "address": { "zip": "90404" } }
{ "_id": "54495ad94c934721ede76d90", "firstname": "Jill", "lastname": "Brown", "address": { "zip": "90404" } }
{ "_id": "566eb3c704c7b31facbb0007", "firstname": "Janet", "lastname": "Jones", "address": { "zip": "90404" } }
{ "_id": "5a999cc461d36489a27f2563", "firstname": "Jan", "lastname": "Smith", "address": { "zip": "90404" } }

Powerful query language

  • Rich and expressive query language that allows you to filter and sort by any field, no matter how nested it may be within a document.

  • Support for aggregations and other modern use-cases such as geo-based search, graph search, and text search.

  • Queries are themselves JSON, and thus easily composable. No more concatenating strings to dynamically generate SQL queries.

session.start_transaction()
order = { line_items : [ { item : 5, quantity: 6 } ] }
db.orders.insertOne( order, session=session );
for x in order.line_items:
  db.inventory.update(
    { _id  : x.item } ,
    { $inc : { number : -1 * x.quantity } },
    session=session
  )
session.commit_transaction()

All the power of a relational database, and more...

  • Distributed multi-document ACID transactions with snapshot isolation.

  • Support for joins in queries.

  • Two types of relationships instead of one: reference and embedded.

What will you build?

Launch an Atlas cluster, start a Realm project, chart your data and build the next great thing.