In questo approfondimento vedremo come utilizzare MongoDB in python. MongoDB è un database non relazionale, ovvero un database che non utilizza le tabelle per memorizzare i dati, ma i documenti. I documenti sono memorizzati in file JSON, e possono essere annidati. MongoDB è molto utilizzato per le applicazioni web, in quanto è molto veloce e scalabile.
Per utilizzare MongoDB in python, è necessario installare il modulo pymongo
. Per installare il modulo, eseguire il seguente comando:
pip install pymongo
Per connettersi ad un database MongoDB, è necessario utilizzare la classe MongoClient
del modulo pymongo
. Ecco un esempio di connessione ad un database MongoDB:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
Per creare un database in MongoDB, è necessario utilizzare il metodo create_database
della classe MongoClient
. Ecco un esempio di creazione di un database:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
Per creare una collezione in MongoDB, è necessario utilizzare il metodo create_collection
dell'oggetto Database
. Ecco un esempio di creazione di una collezione:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
Per inserire un documento in una collezione, è necessario utilizzare il metodo insert_one
dell'oggetto Collection
. Ecco un esempio di inserimento di un documento:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
doc = {"name": "John", "address": "Highway 37"}
col.insert_one(doc)
Per inserire più documenti in una collezione, è necessario utilizzare il metodo insert_many
dell'oggetto Collection
. Ecco un esempio di inserimento di più documenti:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
doc1 = {"name": "John", "address": "Highway 37"}
doc2 = {"name": "Peter", "address": "Lowstreet 27"}
doc3 = {"name": "Amy", "address": "Apple st 652"}
col.insert_many([doc1, doc2, doc3])
Per selezionare un documento da una collezione, è necessario utilizzare il metodo find_one
dell'oggetto Collection
. Ecco un esempio di selezione di un documento:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
x = col.find_one()
print(x)
Per selezionare più documenti da una collezione, è necessario utilizzare il metodo find
dell'oggetto Collection
. Ecco un esempio di selezione di più documenti:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
for x in col.find():
print(x)
Per effettuare una query su una collezione, è necessario utilizzare il metodo find
dell'oggetto Collection
. Ecco un esempio di query:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": "Park Lane 38"}
for x in col.find(query):
print(x)
Per effettuare una query avanzata su una collezione, è necessario utilizzare i metodi di query di MongoDB. Ecco un esempio di query avanzata:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": {"$regex": "^S"}}
for x in col.find(query):
print(x)
Per filtrare i documenti restituiti da una query, è necessario utilizzare il metodo find
dell'oggetto Collection
. Ecco un esempio di filtro:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": "Park Lane 38"}
result = col.find(query, {"_id": 0, "name": 1, "address": 1})
for x in result:
print(x)
Per eliminare un documento da una collezione, è necessario utilizzare il metodo delete_one
dell'oggetto Collection
. Ecco un esempio di eliminazione di un documento:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": "Mountain 21"}
col.delete_one(query)
Per eliminare più documenti da una collezione, è necessario utilizzare il metodo delete_many
dell'oggetto Collection
. Ecco un esempio di eliminazione di più documenti:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": {"$regex": "^S"}}
col.delete_many(query)
Per aggiornare un documento in una collezione, è necessario utilizzare il metodo update_one
dell'oggetto Collection
. Ecco un esempio di aggiornamento di un documento:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": "Valley 345"}
new_values = {"$set": {"address": "Canyon 123"}}
col.update_one(query, new_values)
Per aggiornare più documenti in una collezione, è necessario utilizzare il metodo update_many
dell'oggetto Collection
. Ecco un esempio di aggiornamento di più documenti:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
query = {"address": {"$regex": "^S"}}
new_values = {"$set": {"name": "Minnie"}}
col.update_many(query, new_values)
Per limitare il numero di documenti restituiti da una query, è necessario utilizzare il metodo limit
dell'oggetto Collection
. Ecco un esempio di limitazione:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
result = col.find().limit(5)
for x in result:
print(x)
Per ordinare i documenti restituiti da una query, è necessario utilizzare il metodo sort
dell'oggetto Collection
. Ecco un esempio di ordinamento:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
result = col.find().sort("name")
for x in result:
print(x)
Per eliminare una collezione, è necessario utilizzare il metodo drop
dell'oggetto Collection
. Ecco un esempio di eliminazione di una collezione:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
col = db["customers"]
col.drop()
Per eliminare un database, è necessario utilizzare il metodo drop_database
dell'oggetto MongoClient
. Ecco un esempio di eliminazione di un database:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
client.drop_database("mydatabase")
Per eseguire il backup di un database MongoDB, è possibile utilizzare il comando mongodump
. Ecco un esempio di backup:
mongodump --db mydatabase
Per ripristinare un database MongoDB da un backup, è possibile utilizzare il comando mongorestore
. Ecco un esempio di ripristino:
mongorestore --db mydatabase dump/mydatabase
In questo approfondimento abbiamo visto come utilizzare MongoDB in python. Abbiamo visto come connettersi ad un database, creare un database e una collezione, inserire, selezionare, aggiornare ed eliminare documenti, eseguire query, filtri, limitazioni e ordinamenti, e infine come eseguire il backup e il ripristino di un database.