# Python Driver
# Connect to MongoDB using 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 queries
Once you got a collection
object, queries use the same syntax as in the mongo shell. Some slight differences are:
db.find({frequencies: {$exists: true}})
becomes in pymongo
(note the True
in uppercase):
db.find({"frequencies": { "$exists": True }})
objects such as object ids or `ISODate` are manipulated using python classes. PyMongo uses its own [`ObjectId`](http://api.mongodb.com/python/current/api/bson/objectid.html) class to deal with object ids, while dates use the standard `datetime` package. For example, if you want to query all events between 2010 and 2011, you can do:
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 } }):
# Update all documents in a collection using PyMongo
Let's say you need to add a field to every document in a collection.
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)
The find
method returns a Cursor
, on which you can easily iterate over using the for in
syntax.
Then, we call the update
method, specifying the _id
and that we add a field ($set
). The parameters
upsert
and multi
come from mongodb (see here for more info (opens new window)).
# Syntax
- mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
# Parameters
Parameter | Detail |
---|---|
hostX | Optional. You can specify as many hosts as necessary. You would specify multiple hosts, for example, for connections to replica sets. |
:portX | Optional. The default value is :27017 if not specified. |
database | Optional. The name of the database to authenticate if the connection string includes authentication credentialsIf /database is not specified and the connection string includes credentials, the driver will authenticate to the admin database. |
?options | Connection specific options |