NoSQL Databases with Python

Loading

MongoDB is a powerful NoSQL database that stores data in flexible, JSON-like documents. It is widely used for applications requiring high scalability, real-time analytics, and unstructured data handling. Python provides seamless integration with MongoDB using the pymongo library.


1. Why Use MongoDB with Python?

Schema-less – No predefined schema required.
JSON-like Documents – Stores data as BSON (Binary JSON).
Scalability – Supports horizontal scaling (sharding).
High Performance – Optimized for read and write operations.
Flexible Queries – Supports powerful querying and indexing.


2. Installing MongoDB and PyMongo

Step 1: Install MongoDB

  1. Download MongoDB from MongoDB Official Website.
  2. Install and Start MongoDB Service:
    • Windows: Run mongod.exe
    • Linux/macOS: Use brew services start mongodb-community@6.0
  3. Verify MongoDB is running using: bashCopyEditmongo --version

Step 2: Install PyMongo

To interact with MongoDB using Python, install pymongo:

pip install pymongo

3. Connecting Python to MongoDB

Establish a Connection

from pymongo import MongoClient

# Connect to MongoDB server
client = MongoClient("mongodb://localhost:27017/")

# Create or access a database
db = client["testdb"]

print("Connected to MongoDB successfully!")

MongoClient("mongodb://localhost:27017/") connects to the local MongoDB instance.
db = client["testdb"] creates (if not exists) or accesses a database named testdb.


4. Creating and Accessing Collections

Create a Collection

collection = db["users"]
print("Collection created!")

Collections in MongoDB are similar to tables in relational databases.

List All Collections in the Database

print(db.list_collection_names())

5. Inserting Data into MongoDB

Insert a Single Document

user = {"name": "John Doe", "age": 25, "email": "john@example.com"}
collection.insert_one(user)
print("User inserted successfully!")

_id is automatically generated for each document.

Insert Multiple Documents

users = [
{"name": "Alice", "age": 30, "email": "alice@example.com"},
{"name": "Bob", "age": 22, "email": "bob@example.com"},
{"name": "Charlie", "age": 28, "email": "charlie@example.com"}
]
collection.insert_many(users)
print("Multiple users inserted successfully!")

insert_many() allows batch insertion.


6. Retrieving Data from MongoDB

Fetch All Documents

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

Returns all documents in the collection.

Retrieve a Specific Document

user = collection.find_one({"name": "Alice"})
print(user)

Fetches the first document that matches the query.

Retrieve Specific Fields

for user in collection.find({}, {"name": 1, "age": 1, "_id": 0}):
print(user)

_id: 0 excludes _id from results.

Filter Data with Conditions

for user in collection.find({"age": {"$gt": 25}}):  # Users older than 25
print(user)

MongoDB supports powerful query operators ($gt, $lt, $in, $regex, etc.).


7. Updating Data in MongoDB

Update a Single Document

collection.update_one({"name": "Alice"}, {"$set": {"age": 35}})
print("User updated successfully!")

update_one() modifies the first matching document.

Update Multiple Documents

collection.update_many({"age": {"$lt": 30}}, {"$set": {"status": "young"}})
print("Users updated successfully!")

update_many() updates all matching documents.


8. Deleting Data in MongoDB

Delete a Single Document

collection.delete_one({"name": "Bob"})
print("User deleted successfully!")

Deletes the first matching document.

Delete Multiple Documents

collection.delete_many({"age": {"$gt": 50}})
print("Users deleted successfully!")

Deletes all users older than 50.


9. Indexing for Performance Optimization

Indexes improve query performance.

Create an Index on the email Field

collection.create_index([("email", 1)])
print("Index created on email field!")

Use indexes for faster searching and sorting.


10. Aggregation in MongoDB

Aggregation is used for data analysis.

Example: Count Users by Age

pipeline = [
{"$group": {"_id": "$age", "count": {"$sum": 1}}}
]
results = collection.aggregate(pipeline)

for result in results:
print(result)

Groups users by age and counts occurrences.


11. Exporting and Importing Data

Export Data to JSON

import json

data = list(collection.find({}, {"_id": 0})) # Exclude _id for readability
with open("users.json", "w") as file:
json.dump(data, file, indent=4)

print("Data exported successfully!")

Import Data from JSON

with open("users.json", "r") as file:
users = json.load(file)
collection.insert_many(users)

print("Data imported successfully!")

Useful for data migration and backups.


12. Closing MongoDB Connection

client.close()
print("MongoDB connection closed.")

Always close the connection to free resources.


13. Advanced MongoDB Features in Python

FeatureDescription
ShardingDistributes data across multiple servers for scalability
ReplicationEnsures high availability of data
GridFSStores large files (images, videos) in MongoDB
Full-Text SearchEnables efficient text searches
Geospatial QueriesHandles location-based queries

Leave a Reply

Your email address will not be published. Required fields are marked *