MongoDB
Python-stuurprogramma
Zoeken…
Syntaxis
- MongoDB: // [gebruikersnaam: wachtwoord @] host1 [: port1] [, host2 [: port2], ... [, hostN [: portN]]] [/? [databank] [opties]]
parameters
Parameter | Detail |
---|---|
hostX | Optioneel. U kunt zoveel hosts opgeven als nodig is. U zou bijvoorbeeld meerdere hosts opgeven voor verbindingen met replicasets. |
: portX | Optioneel. De standaardwaarde is: 27017 indien niet opgegeven. |
databank | Optioneel. De naam van de te authenticeren database als de verbindingsreeks verificatiegegevens bevat Als / database niet is opgegeven en de verbindingsreeks identificatiegegevens bevat, wordt het stuurprogramma geverifieerd bij de beheerdersdatabase. |
? opties | Verbindingsspecifieke opties |
Maak verbinding met MongoDB met behulp van 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()
PyMongo-vragen
Nadat u een collection
, gebruiken query's dezelfde syntaxis als in de mongo-shell. Enkele kleine verschillen zijn:
elke sleutel moet tussen haakjes staan. Bijvoorbeeld:
db.find({frequencies: {$exists: true}})
wordt in
pymongo
(let op deTrue
in hoofdletters):db.find({"frequencies": { "$exists": True }})
objecten zoals object-ID's of
ISODate
worden gemanipuleerd met behulp van python-klassen. PyMongo gebruikt zijn eigenObjectId
klasse om object-ID's af te handelen, terwijl datums het standaarddatetime
pakket gebruiken. Als u bijvoorbeeld alle gebeurtenissen tussen 2010 en 2011 wilt doorzoeken, kunt u het volgende doen: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 } }):
Werk alle documenten in een verzameling bij met PyMongo
Stel dat u een veld aan elk document in een verzameling moet toevoegen.
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)
De find
retourneert een Cursor
, waar je gemakkelijk herhalen boven het gebruik van de for in
syntax. Vervolgens roepen we de update
, waarbij we de _id
en dat we een veld toevoegen ( $set
). De parameters upsert
en multi
komen van mongodb ( zie hier voor meer info ).