Getting started with PyMongo
Remarks#
This section provides an overview of what pymongo is, and why a developer might want to use it.
It should also mention any large subjects within pymongo, and link out to the related topics. Since the Documentation for pymongo is new, you may need to create initial versions of those related topics.
Installation or Setup
Detailed instructions on getting pymongo set up or installed.
-
Installing with Pip
-
To install pymongo for the first time:
pip install pymongo
-
Installing a specific version of pymongo:
Where X.X.X is the version to be installed
pip install pymongo==X.X.X
-
Upgrading existing pymongo:
pip install --upgrade pymongo
-
-
Installing with easy_install
-
To install pymongo for the first time:
python -m easy_install pymongo
-
Upgrading existing pymongo:
python -m easy_install -U pymongo
-
Hello, World
PyMongo is a native Python driver for MongoDB.
Install PyMongo
pip install pymongo
Create a connection
Use MongoClient to create a connection. MongoClient defaults to MongoDB instance running on localhost:27017
if not specified.
from pymongo import MongoClient
client = MongoClient()
Access Database Objects
PyMongo’s Database class represents database construct in MongoDB. Databases hold groups of logically related collections.
db = client.mydb
Access Collection Objects
PyMongo’s Collection class represents collection construct in MongoDB. Collections hold groups of related documents.
col = db.mycollection
MongoDB creates new databases and collections implicitly upon first use.
Basic CRUD Operation
MongoDB stores data records as BSON documents. BSON is the binary representation of JSON.
$ python
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> col = client.mydb.test
Create
Insert a single document insert_one(document)
>>> result = col.insert_one({'x':1})
>>> result.inserted_id
ObjectId('583c16b9dc32d44b6e93cd9b')
Insert multiple documents insert_many(documents)
>>> result = col.insert_many([{'x': 2}, {'x': 3}])
>>> result.inserted_ids
[ObjectId('583c17e7dc32d44b6e93cd9c'), ObjectId('583c17e7dc32d44b6e93cd9d')]
Replace a single document matching the filter replace_one(filter, replacement, upsert=False)
.
(to insert a new document if matching document doesn’t exist, use upsert=True
)
>>> result = col.replace_one({'x': 1}, {'y': 1})
>>> result.matched_count
1
>>> result.modified_count
1
Update
Update a single document matching the filter update_one(filter, update, upsert=False)
>>> result = col.update_one({'x': 1}, {'x': 3})
Update one or more documents that match the filter update_many(filter, update, upsert=False)
>>> result = col.update_many({'x': 1}, {'x': 3})
Read
Query the database find(filter=None, projection=None, skip=0, limit=0, no_cursor_timeout=False)
. The filter argument is a prototype document that all results must match.
>>> result = col.find({'x': 1})
Get a single document from the database find_one(filter=None)
>>> result = col.find_one()
Query With Projection
query={'x':1}
projection={'_id':0, 'x':1} # show x but not show _id
result=col.find(query,projection)
Delete
Delete a single document matching the filter delete_one(filter)
>>> result = col.delete_one({'x': 1})
>>> result.deleted_count
1
Delete one or more documents matching the filter delete_many(filter)
>>> result = col.delete_many({'x': 1})
>>> result.deleted_count
3
PyMongo also provides find_one_and_delete()
, find_one_and_update()
and find_one_and_replace()
functionality.