Exploring MongoDB Functions: A Comprehensive Guide

Tejaksha K
4 min readSep 26, 2023

--

Introduction:

MongoDB is a popular NoSQL database that offers a wide range of functions and methods for data manipulation and management. In this blog post, we’ll dive into some essential MongoDB functions and concepts, along with sample examples for each.

1. CRUD Operations:

Create (insert_one and insert_many):

MongoDB allows you to insert one or multiple documents into a collection. Here’s an example of inserting a single document into a “users” collection:

from pymongo import MongoClient
# Connect to MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
# Insert a single document
user_data = {"name": "John", "email": "john@example.com"}
users_collection = db["users"]
result = users_collection.insert_one(user_data)

Read (find):

Querying documents from a collection is a fundamental operation. Here’s an example of finding all documents in the “users” collection:

all_users = users_collection.find({})
for user in all_users:
print(user)

Update (update_one and update_many):

Updating documents allows you to modify existing data. Example of updating a single document:

# Update a document
filter = {"name": "John"}
new_data = {"$set": {"email": "newemail@example.com"}}
result = users_collection.update_one(filter, new_data)

Delete (delete_one and delete_many):

Deleting documents removes data from the collection. Example of deleting a single document:

# Delete a document
filter = {"name": "John"}
result = users_collection.delete_one(filter)

2. Aggregation Framework:

$match:

Use $match to filter documents. Example: Find users with an age greater than 25:

pipeline = [
{"$match": {"age": {"$gt": 25}}}
]
result = users_collection.aggregate(pipeline)

$group

The $group stage groups documents by specified fields and performs aggregations like sum, count, or average.

Example: Group users by city and calculate the average age in each city.

pipeline = [
{"$group": {"_id": "$city", "average_age": {"$avg": "$age"}}}
]
result = users_collection.aggregate(pipeline)

$project

The $project stage reshapes documents and includes/excludes fields in the output.

Example: Include only the “name” and “email” fields in the output.

pipeline = [
{"$project": {"_id": 0, "name": 1, "email": 1}}
]
result = users_collection.aggregate(pipeline)

$sort

The $sort stage sorts documents in the result set.

Example: Sort users by age in descending order.

pipeline = [
{"$sort": {"age": -1}}
]
result = users_collection.aggregate(pipeline)

$limit

The $limit stage restricts the number of documents returned.

Example: Retrieve only the first 5 users.

pipeline = [
{"$limit": 5}
]
result = users_collection.aggregate(pipeline)

$skip

The $skip stage skips a specified number of documents in the result set.

Example: Skip the first 3 users and retrieve the rest.

pipeline = [
{"$skip": 3}
]
result = users_collection.aggregate(pipeline)

$lookup

The $lookup stage performs a left outer join with another collection, allowing you to combine data from multiple collections.

Example: Combine data from “users” and “orders” collections based on the “user_id” field.

pipeline = [
{
"$lookup": {
"from": "orders",
"localField": "user_id",
"foreignField": "user_id",
"as": "user_orders"
}
}
]
result = users_collection.aggregate(pipeline)

3. Indexing:

create_index:

Creating an index can improve query performance. Example: Create an ascending index on the “username” field:

users_collection.create_index([("username", pymongo.ASCENDING)])

list_indexes:

List the indexes on a collection.

Example: List all indexes in the “users” collection.

index_list = users_collection.list_indexes()
for index in index_list:
print(index)

drop_index:

Drop an index.

Example: Drop the “username” index in the “users” collection.

users_collection.drop_index("username_1")

4. Collection Management:

list_collection_names:

List all collections in the database. Example:

collection_names = db.list_collection_names()

create_collection:

Create a new collection.

Example: Create a new collection named “products.”

db.create_collection("products")

drop_collection:

Delete a collection.

Example: Delete the “products” collection.

db.drop_collection("products")

5. Database Management:

list_database_names:

List all databases on the server. Example:

database_names = client.list_database_names()

create_database:

Create a new database.

Example: Create a new database named “mynewdb.”

client.create_database("mynewdb")

drop_database:

Delete a database.

Example: Delete the “mynewdb” database.

client.drop_database("mynewdb")

6. Authentication and Authorization:

create_user:

Create a new user with specific privileges. Example:

db.create_user("newuser", password="password", roles=["readWrite"])

update_user:

Update user information or privileges.

Example: Update the password for an existing user.

db.update_user("existinguser", password="newpassword")

remove_user:

Remove a user.

Example: Remove a user from the database.

db.remove_user("user_to_remove")

grant_privileges:

Grant specific privileges to a user.

Example: Grant administrative privileges to a user.

db.grant_privileges("user_with_privileges", roles=["dbAdmin"])

revoke_privileges:

Revoke privileges from a user.

Example: Revoke read privileges from a user.

db.revoke_privileges("user_to_restrict", roles=["read"])

7. Text Search:

$text:

Perform text search on text-indexed fields.

Example: Search for documents containing the word “tutorial” in a text-indexed “content” field.

result = db.my_collection.find({"$text": {"$search": "tutorial"}})

8. Geospatial Queries:

$geoNear:

Find documents near a specified geospatial point.

Example: Find documents near the coordinates (40, -73) within a 5-mile radius.

pipeline = [
{
"$geoNear": {
"near": {"type": "Point", "coordinates": [40, -73]},
"distanceField": "distance",
"maxDistance": 5 * 1609.34, # 5 miles to meters
"spherical": True
}
}
]
result = db.locations.aggregate(pipeline)

9. Geospatial Indexing:

create_index with geospatial options:

Create a geospatial index on a field.

Example: Create a 2dsphere index on the “location” field.

db.my_collection.create_index([("location", "2dsphere")])

Conclusion:

MongoDB offers a rich set of functions and methods for various database operations. This blog post has provided an overview and sample examples for some of the essential MongoDB functions. Exploring and mastering these functions will empower you to work effectively with MongoDB and build robust applications.

You’re welcome! I’m glad I could help you with my blog post. Don’t hesitate to reach out if you have any other questions or need further assistance. Keep up the great work! ❤️

--

--

Tejaksha K

Reach me at https://tinyurl.com/56svjz36 I'm a Full Stack Developer & Cloud Expert with experience in Google Cloud Platform & AWS.