MongoDB Data API
MongoDB Data API
TheMongoDB Data API can be used to query and update data in a MongoDB database without the need for language specific drivers.
Language drivers should be used when possible,but the MongoDB Data API comes in handy when drivers are not available or drivers are overkill for the application.
Read & Write with the MongoDB Data API
The MongoDB Data API is a pre-configured set of HTTPS endpoints that can be used to read and write data to a MongoDB Atlas database.
With the MongoDB Data API, you can create, read, update, delete, or aggregate documents in a MongoDB Atlas database.
Cluster Configuration
In order to use the Data API, you must first enable the functionality from the Atlas UI.
From the MongoDB Atlas dashboard, navigate toData API in the left menu.
Select the data source(s) you would like to enable the API on and clickEnable the Data API.
Access Level
By default, no access is granted. Select the access level you'd like to grant the Data API. The choices are: No Access, Read Only, Read and Write, or Custom Access.
Data API Key
In order to authenticate with the Data API, you must first create a Data API key.
ClickCreate API Key, enter a name for the key, then clickGenerate API Key.
Be sure to copy the API key and save it somewhere safe.You will not get another chance to see this key again.
Sending a Data API Request
We can now use the Data API to send a request to the database.
In the next example, we'll use curl to find the first document in themovies collection of oursample_mflix database.We loaded this sample data in theIntro to Aggregations section.
To run this example, you'll need your App Id, API Key, and Cluster name.
You can find your App Id in theURL Endpoint field of the Data API page in the MongoDB Atlas UI.
Example
curl --location --request POST 'https://data.mongodb-api.com/app/<DATA API APP ID>/endpoint/data/v1/action/findOne' \--header 'Content-Type: application/json' \--header 'Access-Control-Request-Headers: *' \--header 'api-key: <DATA API KEY>' \--data-raw '{ "dataSource":"<CLUSTER NAME>", "database":"sample_mflix", "collection":"movies", "projection": {"title": 1}}'Try it Yourself »Data API Endpoints
In the previous example, we used thefindOne endpoint in our URL.
There are several endpoints available for use with the Data API.
All endpoints start with the Base URL:https://data.mongodb-api.com/app/<Data API App ID>/endpoint/data/v1/action/
Find a Single Document
Endpoint
POST Base_URL/findOneThefindOne endpoint is used to find a single document in a collection.
Request Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>, "projection": <projection>}Find Multiple Documents
Endpoint
POST Base_URL/findThefind endpoint is used to find multiple documents in a collection.
Request Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>, "projection": <projection>, "sort": <sort expression>, "limit": <number>, "skip": <number>}Insert a Single Document
Endpoint
POST Base_URL/insertOneTheinsertOne endpoint is used to insert a single document into a collection.
Request Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "document": <document>}Insert Multiple Documents
Endpoint
POST Base_URL/insertManyTheinsertMany endpoint is used to insert multiple documents into a collection.
Request Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "documents": [<document>, <document>, ...]}Update a Single Document
Endpoint
POST Base_URL/updateOneRequest Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>, "update": <update expression>, "upsert": true|false}Update Multiple Documents
Endpoint
POST Base_URL/updateManyRequest Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>, "update": <update expression>, "upsert": true|false}Delete a Single Document
Endpoint
POST Base_URL/deleteOneRequest Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>}Delete Multiple Documents
Endpoint
POST Base_URL/deleteManyRequest Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "filter": <query filter>}Aggregate Documents
Endpoint
POST Base_URL/aggregateRequest Body
Example
{ "dataSource": "<data source name>", "database": "<database name>", "collection": "<collection name>", "pipeline": [<pipeline expression>, ...]}
