MongoDB
Python-Treiber
Suche…
Syntax
- mongodb: // [Benutzername: Kennwort @] Host1 [: Port1] [, Host2 [: Port2], ... [, HostN [: PortN]]] [/ [Datenbank] [? Optionen]]
Parameter
Parameter | Detail |
---|---|
hostX | Wahlweise. Sie können beliebig viele Hosts angeben. Sie würden beispielsweise mehrere Hosts für Verbindungen zu Replikatsätzen angeben. |
: portX | Wahlweise. Der Standardwert ist: 27017, falls nicht angegeben. |
Datenbank | Wahlweise. Der Name der zu authentifizierenden Datenbank, wenn die Verbindungszeichenfolge Authentifizierungsinformationen enthält. Wenn / database nicht angegeben ist und die Verbindungszeichenfolge Berechtigungsnachweise enthält, authentifiziert sich der Treiber bei der Verwaltungsdatenbank. |
?Optionen | Verbindungsspezifische Optionen |
Verbinden Sie sich über Pymongo mit MongoDB
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()
PyMongo-Abfragen
Sobald Sie ein collection
Objekt erhalten haben, verwenden Abfragen dieselbe Syntax wie in der Mongo-Shell. Einige geringfügige Unterschiede sind:
Jeder Schlüssel muss in Klammern stehen. Zum Beispiel:
db.find({frequencies: {$exists: true}})
wird in
pymongo
(beachten Sie dasTrue
in Großbuchstaben):db.find({"frequencies": { "$exists": True }})
Objekte wie Objekt-IDs oder
ISODate
werden mit Python-KlassenISODate
. PyMongo verwendet seine eigeneObjectId
Klasse, um mit Objekt-IDs zu arbeiten, während Datumsangaben das Standard-datetime
Paket verwenden. Wenn Sie beispielsweise alle Ereignisse zwischen 2010 und 2011 abfragen möchten, können Sie Folgendes tun: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 } }):
Aktualisieren Sie alle Dokumente in einer Sammlung mit PyMongo
Angenommen, Sie müssen jedem Dokument in einer Sammlung ein Feld hinzufügen.
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)
Die find
Methode gibt einen Cursor
, auf dem Sie die for in
Syntax verwenden können. Dann rufen wir die update
, geben die _id
und fügen ein Feld ( $set
) hinzu. Die Parameter upsert
und multi
stammen von Mongodb ( weitere Informationen finden Sie hier ).