Learn MongoDB + Python basics in 5 minutes ! 
Tags: devops, python, mongodb, codenewbie
Published: 2020-10-17 13:31:31

# What is MongoDB?
MongoDB is a NoSQL database – a NoSQL database is one where you don’t query the database with SQL. Other than that NoSQL really means nothing to define a database. So let’s have another go at defining MongoDB. MongoDB is a JSON document datastore. It allows you to store and query JSON style documents with a few smarts on top. This means that you can store objects with nested data all in one collection (collections are like tables for MongoDB).

# What is MongoDB Compass?
MongoDB Compass is the GUI for MongoDB. Compass allows you to analyze and understand the contents of your data without formal knowledge of MongoDB query syntax. Click [here](!https://www.mongodb.com/try/download/compass) to download and watch this [video](!https://www.youtube.com/watch?v=o2Op1ajWY30) to install compass.

# Let's Code
- Install [pymongo](!https://pypi.org/project/pymongo/). Just open the command prompt and type:
```Javascript
pip install pymongo
```
- Open Jupyter Notebook. Let's create a database first.
```Javascript
DEFAULT_CONNECTION_URL = "mongodb://localhost:27017/"
database_name = "Indian_States_DB"

# Establish a connection with mongodb
client = pymongo.MongoClient(DEFAULT_CONNECTION_URL)

## Creating a Database
database = client[database_name]
```
- Create a collection. Collection in NoSQL can also be called a table. We have created a empty table below.
```Javascript
# Creating a collection
COLLECTION_NAME = 'Gross_Domestic_Product'
# Adding the collection to our database
collection = database[COLLECTION_NAME]
```
- Let's check if our database exists or not.
```Javascript
client.list_database_names()

> ['admin', 'config', 'crawlerDB', 'demoDB', 'local']
```
The database name does not appear in the above list because there is not data inside Gross_Domestic_Product.

## Inserting Records
```Javascript
# Inserting one record
record = {
        "Rank": "1",
        "State": "Maharastra",
        "Nominal GDP ($ Billion)": "400",
        "Data Year": "2019-2020",
        "Comparable Country": "Philippines"
        }
collection.insert_one(record)
```
```Javascript
# Inserting multiple records
records = [{
        "Rank": "2",
        "State": "Tamil Nadu",
        "Nominal GDP ($ Billion)": "260",
        "Data Year": "2019-2020",
        "Comparable Country": "Vietnam"
        },
        {
        "Rank": "3",
        "State": "Uttar Pradesh",
        "Nominal GDP ($ Billion)": "250",
        "Data Year": "2019-2020",
        "Comparable Country": "Romania"
        },
        {
        "Rank": "4",
        "State": "Karnataka",
        "Nominal GDP ($ Billion)": "240",
        "Data Year": "2019-2020",
        "Comparable Country": "Portugal"
        }]
collection.insert_many(records)
```
- Again check if the database exists or not.
```Javascript
client.list_database_names()

> ['Indian_States_DB', 'admin', 'config', 'crawlerDB', 'demoDB', 'local']
```
# Find Records
- The find() method returns all occurrences in the selection. Select rank and states from the collection.
```Javascript
for i in collection.find({},{"_id":0, "Rank":1, "State":1}):
    print(i)

{'Rank': '1', 'State': 'Maharastra'}
{'Rank': '2', 'State': 'Tamil Nadu'}
{'Rank': '3', 'State': 'Uttar Pradesh'}
{'Rank': '4', 'State': 'Karnataka'}
```
You are not allowed to specify both 0 and 1 values in the same object (except if one of the fields is the _id field). If you specify a field with the value 0, all other fields get the value 1, and vice versa. For selecting all the records, simply execute find().
# Sort
- Use the sort() method to sort the result in ascending or descending order. Use the value -1 as the second parameter to sort descending.
```Javascript
for i in collection.find({},{"_id":0,"State":1, "Nominal GDP ($ Billion)":1}).sort("State", -1):
    print(i)

{'State': 'Uttar Pradesh', 'Nominal GDP ($ Billion)': '250'}
{'State': 'Tamil Nadu', 'Nominal GDP ($ Billion)': '260'}
{'State': 'Maharastra', 'Nominal GDP ($ Billion)': '400'}
{'State': 'Karnataka', 'Nominal GDP ($ Billion)': '240'}
```
# Limit the Result
- To limit the result in MongoDB, we use the limit() method.
```Javascript
for i in collection.find({},{"_id":0, "Rank":1, "State":1, "Comparable Country":1}).limit(2):
    print(i)

{'Rank': '1', 'State': 'Maharastra', 'Comparable Country': 'Philippines'}
{'Rank': '2', 'State': 'Tamil Nadu', 'Comparable Country': 'Vietnam'}
```
# Delete Records
To delete one document, we use the delete_one() method. To delete more than one document, use the delete_many() method.
```Javascript
collection.delete_one({"State": "Maharastra"})

for i in collection.find():
    print(i)

{'_id': ObjectId('5f8ae0347d1ce4be5cea8007'), 'Rank': '2', 'State': 'Tamil Nadu', 'Nominal GDP ($ Billion)': '260', 'Data Year': '2019-2020', 'Comparable Country': 'Vietnam'}
{'_id': ObjectId('5f8ae0347d1ce4be5cea8008'), 'Rank': '3', 'State': 'Uttar Pradesh', 'Nominal GDP ($ Billion)': '250', 'Data Year': '2019-2020', 'Comparable Country': 'Romania'}
{'_id': ObjectId('5f8ae0347d1ce4be5cea8009'), 'Rank': '4', 'State': 'Karnataka', 'Nominal GDP ($ Billion)': '240', 'Data Year': '2019-2020', 'Comparable Country': 'Portugal'}
```

This was all about basics of MongoDB. Hope you like my explanation. Furthermore, if you have any query, feel free to ask in a comment section.