MongoDB
Driver Python
Ricerca…
Sintassi
- MongoDB: // [username: password @] host1 [: port1] [, host2 [: port2], ... [, HostN [: portN]]] [/? [database] [opzioni]]
Parametri
Parametro | Dettaglio |
---|---|
hostX | Opzionale. È possibile specificare tutti gli host necessari. Dovresti specificare più host, ad esempio, per le connessioni ai set di repliche. |
: portX | Opzionale. Il valore predefinito è: 27017 se non specificato. |
Banca dati | Opzionale. Il nome del database per l'autenticazione se la stringa di connessione include credentialsIf / database di autenticazione non è specificato e la stringa di connessione include le credenziali, il driver verrà autenticato nel database di amministrazione. |
?opzioni | Opzioni specifiche di connessione |
Connettiti a MongoDB usando pymongo
from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)
db = client['test_db']
# or
# db = client.test_db
# collection = db['test_collection']
# or
collection = db.test_collection
collection.save({"hello":"world"})
print collection.find_one()
Query PyMongo
Una volta ottenuto un oggetto di collection
, le query utilizzano la stessa sintassi della shell di mongo. Alcune piccole differenze sono:
ogni chiave deve essere racchiusa tra parentesi. Per esempio:
db.find({frequencies: {$exists: true}})
diventa in
pymongo
(nota ilTrue
in maiuscolo):db.find({"frequencies": { "$exists": True }})
oggetti come ID oggetto o
ISODate
vengono manipolati usando le classi python. PyMongo utilizza la propria classeObjectId
per gestire gli ID oggetto, mentre le date utilizzano il pacchettodatetime
standard. Ad esempio, se desideri eseguire una query su tutti gli eventi tra il 2010 e il 2011, puoi eseguire:from datetime import datetime date_from = datetime(2010, 1, 1) date_to = datetime(2011, 1, 1) db.find({ "date": { "$gte": date_from, "$lt": date_to } }):
Aggiorna tutti i documenti in una raccolta usando PyMongo
Diciamo che è necessario aggiungere un campo a ogni documento in una raccolta.
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.mydb.mycollection
for doc in db.find():
db.update(
{'_id': doc['_id']},
{'$set': {'newField': 10} }, upsert=False, multi=False)
Il metodo find
restituisce un Cursor
, sul quale è possibile eseguire facilmente l'iterazione utilizzando la sintassi for in
. Quindi, chiamiamo il metodo di update
, specificando _id
e aggiungendo un campo ( $set
). I parametri upsert
e multi
provengono da mongodb ( vedi qui per maggiori informazioni ).