🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi Modifica MongoDB Python

Codegrind Team•Jul 10 2024

Esercizi sulla modifica di dati in un database MongoDB utilizzando le librerie Python pymongo e motor. Gli esercizi includono approcci sequenziali e orientati agli oggetti (OOP).

Esercizio 1: Aggiornamento Singolo con pymongo (Sequenziale)

Aggiornare un singolo documento in una collezione utilizzando pymongo.
from pymongo import MongoClient

def update_single_document():
    client = MongoClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    result = collection.update_one({"name": "John Doe"}, {"$set": {"position": "Senior Software Engineer"}})
    print("Documenti modificati:", result.modified_count)
    client.close()

update_single_document()

Esercizio 2: Aggiornamento Multiplo con pymongo (OOP)

Aggiornare più documenti in una collezione utilizzando pymongo e OOP.
from pymongo import MongoClient

class MongoDBConnection:
    def __init__(self, uri, db_name, collection_name):
        self.client = MongoClient(uri)
        self.db = self.client[db_name]
        self.collection = self.db[collection_name]

    def update_multiple_documents(self, query, update):
        result = self.collection.update_many(query, update)
        print("Documenti modificati:", result.modified_count)

    def close(self):
        self.client.close()

# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
db_connection.update_multiple_documents({"position": "Developer"}, {"$set": {"position": "Software Developer"}})
db_connection.close()

Esercizio 3: Aggiornamento Singolo con motor (Sequenziale)

Aggiornare un singolo documento in una collezione utilizzando motor.
import motor.motor_asyncio
import asyncio

async def update_single_document():
    client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    result = await collection.update_one({"name": "Jane Doe"}, {"$set": {"position": "Lead Analyst"}})
    print("Documenti modificati:", result.modified_count)
    client.close()

# Uso
asyncio.run(update_single_document())

Esercizio 4: Aggiornamento Multiplo con motor (OOP)

Aggiornare più documenti in una collezione utilizzando motor e OOP.
import motor.motor_asyncio
import asyncio

class MongoDBConnection:
    def __init__(self, uri, db_name, collection_name):
        self.client = motor.motor_asyncio.AsyncIOMotorClient(uri)
        self.db = self.client[db_name]
        self.collection = self.db[collection_name]

    async def update_multiple_documents(self, query, update):
        result = await self.collection.update_many(query, update)
        print("Documenti modificati:", result.modified_count)

    def close(self):
        self.client.close()

# Uso
async def main():
    db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
    await db_connection.update_multiple_documents({"position": "Manager"}, {"$set": {"position": "Senior Manager"}})
    db_connection.close()

asyncio.run(main())

Esercizio 5: Aggiornamento con Opzioni con pymongo (Sequenziale)

Aggiornare un documento con opzioni specifiche (es. upsert) utilizzando pymongo.
from pymongo import MongoClient

def update_with_options():
    client = MongoClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    result = collection.update_one(
        {"name": "Alice Smith"},
        {"$set": {"position": "Principal Data Scientist"}},
        upsert=True
    )
    print("Documenti modificati o inseriti:", result.upserted_id or result.modified_count)
    client.close()

update_with_options()

Esercizio 6: Aggiornamento con Array con pymongo (OOP)

Aggiornare un documento modificando un array all'interno del documento utilizzando pymongo e OOP.
from pymongo import MongoClient

class MongoDBConnection:
    def __init__(self, uri, db_name, collection_name):
        self.client = MongoClient(uri)
        self.db = self.client[db_name]
        self.collection = self.db[collection_name]

    def update_array_field(self, query, update):
        result = self.collection.update_one(query, update)
        print("Documenti modificati:", result.modified_count)

    def close(self):
        self.client.close()

# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'projects')
db_connection.update_array_field(
    {"project_name": "Project X"},
    {"$push": {"team_members": {"name": "New Member", "role": "Tester"}}}
)
db_connection.close()

Esercizio 7: Aggiornamento Condizionale con motor (Sequenziale)

Aggiornare documenti condizionati su un valore specifico utilizzando motor.
import motor.motor_asyncio
import asyncio

async def update_conditional_documents():
    client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    result = await collection.update_many({"years_of_experience": {"$gt": 5}}, {"$set": {"senior": True}})
    print("Documenti modificati:", result.modified_count)
    client.close()

# Uso
asyncio.run(update_conditional_documents())

Esercizio 8: Aggiornamento con Incremento con motor (OOP)

Aggiornare un documento incrementando un valore numerico utilizzando motor e OOP.
import motor.motor_asyncio
import asyncio

class MongoDBConnection:
    def __init__(self, uri, db_name, collection_name):
        self.client = motor.motor_asyncio.AsyncIOMotorClient(uri)
        self.db = self.client[db_name]
        self.collection = self.db[collection_name]

    async def increment_field(self, query, field, increment_value):
        result = await self.collection.update_one(query, {"$inc": {field: increment_value}})
        print("Documenti modificati:", result.modified_count)

    def close(self):
        self.client.close()

# Uso
async def main():
    db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
    await db_connection.increment_field({"name": "Bob Johnson"}, "years_of_experience", 1)
    db_connection.close()

asyncio.run(main())