# MongoDB

To work with data in a MongoDB database, you first need to create a set of [environment-variables](https://datalab-docs.datacamp.com/work/environment-variables "mention") to securely store the connection credentials. Next, you can write some Python code to establish a connection and run queries.

## Store MongoDB credentials

Create a new Python workbook (or duplicate [this workbook](https://app.datacamp.com/workspace/new?_tag=workspace\&title=Connect%20to%20a%20MongoDB%20database\&accountType=personal\&utm_content=copy_duplicate_link\&utm_medium=in_product\&utm_source=workspace\&visibility=public\&workspaceId=b00c0e1a-d0c0-4f7f-a6c9-592dd6143fd8) that already has all the Python code you'll need in the next step).

In your new workbook, click on "Environment", and click on "+" next to "Environment variables". You need to create 3 environment variables:

* `MONGO_HOST`: Where your MongoDB cluster/database is hosted, e.g. test-cluster.t6rcsje.mongodb.net.
* `MONGO_USER`: The username with which to connect to your MongoDB cluster
* `MONGO_PASS`: The username's password.

Give a meaningful name to this set of Environment variables, e.g. "MongoDB Cluster". Click Save and continue until your session is restarted to activate these environment variables.

<figure><img src="https://4179539225-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZqboFGZzD87nn7oPsm%2Fuploads%2F9PuD2IIrDzXxCYP9uY5H%2Fimage.png?alt=media&#x26;token=73bc10ee-4717-45d7-925e-b1f0fd5aa057" alt=""><figcaption><p>Set up environent variables.</p></figcaption></figure>

## Query the database

Create a new Python cell and include the following code snippet to create a new Mongo client that connects to the database. Notice how the environment variables are fetched from the environment using `os.environ`.

```python
!pip install pymongo

import os
from pymongo.mongo_client import MongoClient
from pymongo.server_api import ServerApi

uri = f'mongodb+srv://{os.environ.get("MONGO_USER")}:{os.environ.get("MONGO_PASS")}@{os.environ.get("MONGO_HOST")}/?retryWrites=true&w=majority'

# Create a new client and connect to the server
client = MongoClient(uri, server_api=ServerApi('1'))
```

You can now run queries! To start, you can do a ping command to verify that the connection works fine:

```python
try:
    client.admin.command('ping')
    print("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
    print(e)
```

For a quick overview of what PyMongo enables you to do, check out [this comprehensive tutorial](https://api.mongodb.com/python/3.3.1/tutorial.html). It covers how you can get a database, a collection, find documents, insert documents, and more.

### Limit allowed incoming IP addresses

The network calls from the Python or R sessions will always come from one of three fixed, DataCamp-owned IP addresses. You can lock down your MongoDB instance to only accept these IP addresses:

* `34.194.221.107`
* `34.192.118.171`
* `34.192.199.85`
