🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi Inserimento MongoDB Python

Codegrind Team•Jul 10 2024

Esercizi sull’inserimento di dati in un database MongoDB utilizzando le librerie Python pymongo e motor. Gli esercizi includono sia inserimenti singoli che multipli, con approcci sequenziali e orientati agli oggetti (OOP).

Esercizio 1: Inserimento Singolo con pymongo (Sequenziale)

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

def insert_single_document():
    client = MongoClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    document = {"name": "John Doe", "position": "Software Engineer"}
    result = collection.insert_one(document)
    print("Documento inserito con ID:", result.inserted_id)
    client.close()

insert_single_document()

Esercizio 2: Inserimento Multiplo con pymongo (OOP)

Inserire 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 insert_multiple_documents(self, documents):
        result = self.collection.insert_many(documents)
        print("Documenti inseriti con IDs:", result.inserted_ids)

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

# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
    {"name": "Alice Smith", "position": "Data Scientist"},
    {"name": "Bob Johnson", "position": "Project Manager"}
]
db_connection.insert_multiple_documents(documents)
db_connection.close()

Esercizio 3: Inserimento Singolo con motor (Sequenziale)

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

async def insert_single_document():
    client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    document = {"name": "Jane Doe", "position": "Analyst"}
    result = await collection.insert_one(document)
    print("Documento inserito con ID:", result.inserted_id)
    client.close()

# Uso
asyncio.run(insert_single_document())

Esercizio 4: Inserimento Multiplo con motor (OOP)

Inserire 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 insert_multiple_documents(self, documents):
        result = await self.collection.insert_many(documents)
        print("Documenti inseriti con IDs:", result.inserted_ids)

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

# Uso
async def main():
    db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
    documents = [
        {"name": "Charlie Brown", "position": "Developer"},
        {"name": "Dana White", "position": "Designer"}
    ]
    await db_connection.insert_multiple_documents(documents)
    db_connection.close()

asyncio.run(main())

Esercizio 5: Inserimento Singolo con pymongo con gestione delle eccezioni (Sequenziale)

Inserire un singolo documento utilizzando pymongo con gestione delle eccezioni.
from pymongo import MongoClient, errors

def insert_single_document():
    client = MongoClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    document = {"name": "Eva Green", "position": "HR Manager"}
    try:
        result = collection.insert_one(document)
        print("Documento inserito con ID:", result.inserted_id)
    except errors.PyMongoError as e:
        print("Errore nell'inserimento:", e)
    finally:
        client.close()

insert_single_document()

Esercizio 6: Inserimento Multiplo con pymongo con gestione delle eccezioni (OOP)

Inserire più documenti utilizzando pymongo e gestione delle eccezioni in modalità OOP.
from pymongo import MongoClient, errors

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 insert_multiple_documents(self, documents):
        try:
            result = self.collection.insert_many(documents)
            print("Documenti inseriti con IDs:", result.inserted_ids)
        except errors.PyMongoError as e:
            print("Errore nell'inserimento:", e)

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

# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
    {"name": "Fiona Apple", "position": "Musician"},
    {"name": "George Harrison", "position": "Guitarist"}
]
db_connection.insert_multiple_documents(documents)
db_connection.close()

Esercizio 7: Inserimento Singolo con motor e gestione delle eccezioni (Sequenziale)

Inserire un singolo documento utilizzando motor con gestione delle eccezioni.
import motor.motor_asyncio
import asyncio

async def insert_single_document():
    client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    document = {"name": "Hank Moody", "position": "Writer"}
    try:
        result = await collection.insert_one(document)
        print("Documento inserito con ID:", result.inserted_id)
    except Exception as e:
        print("Errore nell'inserimento:", e)
    finally:
        client.close()

# Uso
asyncio.run(insert_single_document())

Esercizio 8: Inserimento Multiplo con motor e gestione delle eccezioni (OOP)

Inserire più documenti utilizzando motor e gestione delle eccezioni in modalità 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 insert_multiple_documents(self, documents):
        try:
            result = await self.collection.insert_many(documents)
            print("Documenti inseriti con IDs:", result.inserted_ids)
        except Exception as e:
            print("Errore nell'inserimento:", e)

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

# Uso
async def main():
    db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
    documents = [
        {"name": "Ivan Drago", "position": "Boxer"},
        {"name": "Jack Torrance", "position": "Caretaker"}
    ]
    await db_connection.insert_multiple_documents(documents)
    db_connection.close()

asyncio.run(main())

Esercizio 9: Inserimento Singolo con pymongo e verifica esistenza documento (Sequenziale)

Inserire un singolo documento utilizzando pymongo e verificare se il documento esiste già.

from pymongo import MongoClient

def insert_single_document():
    client = MongoClient('mongodb://localhost:27017/')
    db = client['testdb']
    collection = db['employees']
    document = {"name": "Karen Page", "position": "Journalist"}
    if collection.count_documents(document) == 0:
        result = collection.insert_one(document)
        print("Documento inserito con ID:", result.inserted_id)
    else:
        print("Il documento esiste già.")
    client.close()

insert_single_document()

Esercizio 10: Inserimento Multiplo con motor e verifica esistenza documenti (OOP)

Inserire più documenti utilizzando motor e verificare se i documenti esistono già in modalità 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 insert_multiple_documents(self, documents):
        for document in documents:
            if await self.collection.count_documents(document) == 0:
                try:
                    result = await self.collection.insert_one(document)
                    print("Documento inserito con ID:", result.inserted_id)
                except Exception as e:
                    print("Errore nell'inserimento:", e)
            else:
                print("Il documento esiste già:", document)

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

# Uso
async def main():
    db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
    documents = [
        {"name": "Lara Croft", "position": "Adventurer"},
        {"name": "Mario Rossi", "position": "Plumber"}
    ]
    await db_connection.insert_multiple_documents(documents)
    db_connection.close()

asyncio.run(main())