Python MongoDB Tutorial – Update Documents Using PyMongo

Last updated 5 months, 1 week ago | 469 views 75     5

Tags:- Python MongoDB

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

  1. Introduction

  2. Prerequisites

  3. Installing PyMongo

  4. Connecting to MongoDB

  5. Inserting Sample Data

  6. update_one() – Update a Single Document

  7. update_many() – Update Multiple Documents

  8. Using Update Operators ($set, $inc, $unset)

  9. Full Working Example

  10. 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.