Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ansmirnov/python-pymongo-usage

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Examples of CRUD in MongoDB using the pymongo Python module

Contents

System environment

  • Deployed MongoDB 4.4.3
  • Python 3.9.1

Install pymongo

pip install pymongo==3.11.3

Imports

import os
from pprint import pprint
from pymongo import MongoClient

Parameters

MONGODB_USERNAME = os.environ.get("MONGODB_USERNAME")
MONGODB_PASSWORD = os.environ.get("MONGODB_PASSWORD")
MONGODB_HOST = os.environ.get("MONGODB_HOST")
MONGODB_DATABASE = os.environ.get("MONGODB_DATABASE")
MONGODB_COLLECTION = os.environ.get("MONGODB_COLLECTION")

Construct the URI

uri = f"mongodb://{MONGODB_USERNAME}:{MONGODB_PASSWORD}@{MONGODB_HOST}"

Connect to the MongoDB

connection = MongoClient(uri)

Select the database

db = connection[MONGODB_DATABASE]

Select the collection

collection = db[MONGODB_COLLECTION]

Insert Documents

Insert one document

doc = {
    "item": "canvas",
    "qty": 100,
    "tags": ["cotton"],
    "size": {
	"h": 28,
	"w": 35.5,
	"uom": "cm"
    }
}
collection.insert_one(doc)

Insert multiple documents

docs = [
    {
        "item": "journal",
        "qty": 25,
        "size": {"h": 14, "w": 21, "uom": "cm"},
        "status": "A"
    },
    {
        "item": "notebook",
        "qty": 50,
        "size": {"h": 8.5, "w": 11, "uom": "in"},
        "status": "A"
    },
    {
        "item": "paper",
        "qty": 100,
        "size": {"h": 8.5, "w": 11, "uom": "in"},
        "status": "D"
    },
    {
        "item": "planner",
        "qty": 75,
        "size": {"h": 22.85, "w": 30, "uom": "cm"},
        "status": "D"
    },
    {
        "item": "postcard",
        "qty": 45,
        "size": {"h": 10, "w": 15.25, "uom": "cm"},
        "status": "A"
    }
]
collection.insert_many(docs)

Queries

Select All Documents in a Collection

query = {}

Specify Equality Condition

query = {"status": "D"}

Specify Conditions Using Query Operators

query = {"status": {"$in": ["A", "D"]}}

Specify AND Conditions

query = {"status": "A", "qty": {"$lt": 30}}

Specify OR Conditions

query = {"$or": [{"status": "A"}, {"qty": {"$lt": 30}}]}

Specify AND as well as OR Conditions

query = {
    "status": "A",
    "$or": [{"qty": {"$lt": 30}}, {"item": {"$regex": "^p"}}]
}

Find documents

cursor = collection.find(query)

Print cursor data

for doc in cursor:
     pprint(doc)

Update Documents

Update operator

update_operator = {
    "$set": {"size.uom": "cm", "status": "P"},
    "$currentDate": {"lastModified": True}
}

Update one

collection.update_one(query, update_operator)

Update many

collection.update_many(query, update_operator)

Replace documents

collection.replace_one(query, doc)

Delete Documents

Delete one

collection.delete_one(query)

Delete many

collection.delete_many(query)

Docker container

Dockerfile

FROM python:3.9.1-buster
RUN pip install pymongo==3.11.3

Build the image

docker build -t python-pymongo-usage .

Configure

MONGODB_USERNAME=user
MONGODB_PASSWORD=topsecret
MONGODB_HOST=mongodb
MONGODB_DATABASE=newdb
MONGODB_COLLECTION=testcollection

Run the container

docker run --rm --link mongodb --env-file .env -it python-pymongo-usage python

References

  1. https://docs.mongodb.com/manual/crud/
Morty Proxy This is a proxified and sanitized view of the page, visit original site.