Python MongoDB Tutorial – Update Documents Using PyMongo
Last updated 5 months, 1 week ago | 469 views 75 5

In real-world applications, data often changes. MongoDB, being a flexible NoSQL database, allows for seamless updates to documents using Python and the PyMongo driver.
This tutorial will guide you step by step through updating documents in MongoDB using Python, including how to update single or multiple documents, use update operators, and avoid common pitfalls.
Table of Contents
-
Introduction
-
Prerequisites
-
Installing PyMongo
-
Connecting to MongoDB
-
Inserting Sample Data
-
update_one()
– Update a Single Document -
update_many()
– Update Multiple Documents -
Using Update Operators (
$set
,$inc
,$unset
) -
Full Working Example
-
Tips and Common Pitfalls
1. Introduction
Updating documents in MongoDB involves modifying the fields of one or more documents using update methods provided by PyMongo:
-
update_one()
– Updates the first document that matches the filter. -
update_many()
– Updates all documents that match the filter.
⚙️ 2. Prerequisites
-
Python 3.x installed
-
MongoDB running locally or in the cloud (MongoDB Atlas)
-
Basic understanding of Python and MongoDB
3. Installing PyMongo
Install PyMongo via pip:
pip install pymongo
4. Connecting to MongoDB
Connect to MongoDB (local or cloud):
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["users"]
5. Inserting Sample Data
Before updating, let’s insert some documents into a users
collection:
collection.insert_many([
{"name": "Alice", "age": 25, "city": "New York"},
{"name": "Bob", "age": 30, "city": "San Francisco"},
{"name": "Charlie", "age": 35, "city": "New York"},
])
6. update_one()
– Update a Single Document
Use update_one()
to update the first matching document:
collection.update_one(
{"name": "Alice"}, # Filter
{"$set": {"city": "Los Angeles"}} # Update
)
This changes Alice's city from New York to Los Angeles.
7. update_many()
– Update Multiple Documents
Use update_many()
to update all matching documents:
collection.update_many(
{"city": "New York"},
{"$set": {"city": "Chicago"}}
)
All users from New York are now updated to Chicago.
8. Using Update Operators
MongoDB offers powerful update operators:
$set
– Set a field’s value
{"$set": {"field": value}}
$inc
– Increment a numeric value
collection.update_one(
{"name": "Bob"},
{"$inc": {"age": 1}} # Increments Bob's age by 1
)
$unset
– Remove a field
collection.update_one(
{"name": "Charlie"},
{"$unset": {"city": ""}} # Removes the 'city' field
)
9. Full Working Example
import pymongo
# Connect to MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["users"]
# Insert sample data
collection.insert_many([
{"name": "Alice", "age": 25, "city": "New York"},
{"name": "Bob", "age": 30, "city": "San Francisco"},
{"name": "Charlie", "age": 35, "city": "New York"}
])
# Update Alice's city
collection.update_one(
{"name": "Alice"},
{"$set": {"city": "Los Angeles"}}
)
# Increment Bob's age
collection.update_one(
{"name": "Bob"},
{"$inc": {"age": 1}}
)
# Update all New York users to Chicago
collection.update_many(
{"city": "New York"},
{"$set": {"city": "Chicago"}}
)
# Remove 'city' from Charlie
collection.update_one(
{"name": "Charlie"},
{"$unset": {"city": ""}}
)
10. Tips and Common Pitfalls
Tip / Pitfall | Explanation |
---|---|
✅ Always use $set with update methods |
Otherwise, you risk replacing the entire document |
✅ Check the result object | Use result.modified_count to verify how many docs were updated |
❌ Avoid omitting the update operator | This would overwrite the entire document accidentally |
✅ Use upsert=True when needed |
Allows insert if no document matches |
✅ Test filters before applying updates | Prevents accidental updates to multiple documents |
✅ Conclusion
Updating documents in MongoDB with PyMongo is both powerful and flexible. Whether you need to update a single record, multiple records, or remove fields altogether, PyMongo provides the tools to do it cleanly and safely.
Mastering MongoDB updates ensures that your applications can handle real-world data changes with precision and confidence.