Démarrer avec PyMongo

Bonjour le monde

PyMongo est un pilote Python natif pour MongoDB.

Installer PyMongo

pip install pymongo

Créer une connexion

Utilisez MongoClient pour créer une connexion. MongoClient utilise par défaut l’instance MongoDB s’exécutant sur localhost:27017 si elle n’est pas spécifiée.

from pymongo import MongoClient
client = MongoClient() 

Accéder aux objets de la base de données

La classe [Database][1] de PyMongo représente la construction de la base de données dans MongoDB. Les bases de données contiennent des groupes de collections logiquement liées.

db = client.mydb

Accéder aux objets de la collection

La classe [Collection][2] de PyMongo représente la construction de collection dans MongoDB. Les collections contiennent des groupes de documents connexes.

col = db.mycollection

MongoDB crée implicitement de nouvelles bases de données et collections lors de la première utilisation.

[1] : http://api.mongodb.com/python/current/api/pymongo/database.html [2] : http://api.mongodb.com/python/current/api/pymongo/collection.html

Fonctionnement CRUD de base

MongoDB stocke les enregistrements de données sous forme de [BSON][1] documents. BSON est la représentation binaire de JSON.

[1] : http://bsonspec.org/

$ python
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> col = client.mydb.test

Créer

Insérer un seul document insert_one(document)

>>> result = col.insert_one({'x':1})
>>> result.inserted_id
ObjectId('583c16b9dc32d44b6e93cd9b')

Insérer plusieurs documents insert_many(documents)

>>> result = col.insert_many([{'x': 2}, {'x': 3}])
>>> result.inserted_ids
[ObjectId('583c17e7dc32d44b6e93cd9c'), ObjectId('583c17e7dc32d44b6e93cd9d')]

Remplacez un seul document correspondant au filtre replace_one(filter, replacement, upsert=False). (pour insérer un nouveau document si le document correspondant n’existe pas, utilisez upsert=True)

>>> result = col.replace_one({'x': 1}, {'y': 1})
>>> result.matched_count
1
>>> result.modified_count
1

Mise à jour

Mettre à jour un seul document correspondant au filtre update_one(filter, update, upsert=False)

>>> result = col.update_one({'x': 1}, {'x': 3})

Mettez à jour un ou plusieurs documents correspondant au filtre update_many(filter, update, upsert=False)

>>> result = col.update_many({'x': 1}, {'x': 3})

Lis

Interrogez la base de données find(filter=None, projection=None, skip=0, limit=0, no_cursor_timeout=False). L’argument filter est un document prototype auquel tous les résultats doivent correspondre.

>>> result = col.find({'x': 1})

Obtenir un seul document de la base de données find_one(filter=None)

>>> result = col.find_one()

Requête avec projection

query={'x':1}
projection={'_id':0, 'x':1} # show x but not show _id
result=col.find(query,projection)

Effacer

Supprimer un seul document correspondant au filtre delete_one(filter)

>>> result = col.delete_one({'x': 1})
>>> result.deleted_count
1

Supprimer un ou plusieurs documents correspondant au filtre delete_many(filter)

>>> result = col.delete_many({'x': 1})
>>> result.deleted_count
3

PyMongo fournit également les fonctionnalités find_one_and_delete(), find_one_and_update() et find_one_and_replace().

Installation ou configuration

Instructions détaillées sur la configuration ou l’installation de pymongo.

  • Installation avec [Pip][1]

    • 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

  • Installation avec [easy_install][2]

    • To install pymongo for the first time:

      python -m easy_install pymongo

    • Upgrading existing pymongo:

      python -m easy_install -U pymongo

[1] : https://pip.pypa.io/en/stable/installing/ [2] : https://pypi.python.org/pypi/setuptools