MongoDB CRUD operations in Python

November 6, 2023

MongoDB, a popular NoSQL database, is widely used in numerous applications due to its scalability and flexibility.

Python developers often interface with MongoDB using a package called pymongo. This guide will walk you through the basic CRUD (Create, Read, Update, Delete) operations in MongoDB using Python.

Prerequisites

  • MongoDB installed on your system
  • Python environment set up
  • pymongo installed (pip install pymongo)

1. Establishing a Connection

First, you need to connect to your MongoDB instance:

from pymongo import MongoClient # Connect to the default host and port client = MongoClient() # Alternatively, specify the host and port # client = MongoClient('localhost', 27017)

2. Database and Collection

MongoDB organizes data in databases and collections. Here's how to specify them:

# Choose a database (it will be created if it doesn’t exist) db = client.mydatabase # Choose a collection (similar to a table in relational databases) collection = db.mycollection

3. CRUD Operations

Create

To insert a document into a collection:

doc = {"name": "John", "age": 30, "city": "New York"} result = collection.insert_one(doc) print(result.inserted_id)

For multiple documents:

docs = [ {"name": "Anna", "age": 25, "city": "London"}, {"name": "Mike", "age": 32, "city": "San Francisco"} ] result = collection.insert_many(docs) print(result.inserted_ids)

Read

To retrieve one document:

# Find one document without any criteria result = collection.find_one() print(result) # Find one document with a criteria result = collection.find_one({"name": "John"}) print(result)

To retrieve multiple documents:

# Find all documents results = collection.find() # Find documents with criteria results = collection.find({"age": {"$gt": 30}}) for r in results: print(r)

Update

To update one document:

# Update the age of John criteria = {"name": "John"} new_values = {"$set": {"age": 31}} collection.update_one(criteria, new_values)

To update multiple documents:

# Increase age by 1 for all documents where age is less than 30 criteria = {"age": {"$lt": 30}} new_values = {"$inc": {"age": 1}} collection.update_many(criteria, new_values)

Delete

To delete one document:

# Delete a document with name John collection.delete_one({"name": "John"})

To delete multiple documents:

# Delete all documents where age is greater than 30 collection.delete_many({"age": {"$gt": 30}})

4. Closing the Connection

After performing your operations, it's good practice to close the connection:

client.close()

Conclusion

MongoDB CRUD operations in Python using pymongo are straightforward. This guide covers the basics to get you started. However, MongoDB offers more advanced features such as indexing, aggregation, and transactions, which are worth exploring as you dive deeper into MongoDB and Python development.

Ship faster, worry less with Basedash

You're busy enough with product work to be weighed down building, maintaining, scoping and developing internal apps and admin panels. Forget all of that, and give your team the admin panel that you don't have to build. Launch in less time than it takes to run a standup.

You're busy enough with product work to be weighed down building, maintaining, scoping and developing internal apps and admin panels. Forget all of that, and give your team the admin panel that you don't have to build. Launch in less time than it takes to run a standup.

You're busy enough with product work to be weighed down building, maintaining, scoping and developing internal apps and admin panels. Forget all of that, and give your team the admin panel that you don't have to build. Launch in less time than it takes to run a standup.

Dashboards and charts

Effortlessly make charts and create a space for your team to work together towards shared goals and metrics.

User CRM

SQL composer with AI

Admin panel

Screenshot of a users table in a database. The interface is very data-dense with information.