MongoDB with PyMongo (Python)
Uses PyMongo 4.19. The code is an ordinary application for the original database; nothing in it knows about MachNoSQL.
The only change
Section titled “The only change”mongodb://app:secret@mongo.example.com:27017/shop?authSource=adminmongodb://app:secret@machnosql.example.com:27017/shop?authSource=adminThe address comes from the environment variable MONGODB_URI, so switching to MachNoSQL changes configuration only.
export MONGODB_URI='mongodb://app:secret@machnosql.example.com:27017/shop?authSource=admin'pip install -r requirements.txtpython app.pySource
Section titled “Source”The program as it is kept and tested in the Mach Database NoSQL repository; highlighted lines read the connection setting.
"""Orders example for MongoDB, unchanged on MachNoSQL."""
import os
from pymongo import MongoClient
client = MongoClient(os.environ["MONGODB_URI"])orders = client.get_default_database()["orders"]
orders.delete_many({})orders.insert_many( [ {"customer": "ada", "item": "keyboard", "qty": 1, "price": 49.0}, {"customer": "ada", "item": "mouse", "qty": 2, "price": 19.5}, {"customer": "linus", "item": "monitor", "qty": 1, "price": 199.0}, ])orders.create_index("customer")
print(orders.find_one({"item": "mouse"}, {"_id": 0}))orders.update_one({"item": "mouse"}, {"$inc": {"qty": 1}})
pipeline = [ {"$group": {"_id": "$customer", "revenue": {"$sum": {"$multiply": ["$qty", "$price"]}}}}, {"$sort": {"revenue": -1}},]for row in orders.aggregate(pipeline): print(row)pymongo==4.19.0