Pymongo FR
Pymongo FR
Pymongo FR
#pymongo
Table des matières
À propos 1
Remarques 2
Examples 2
Installation ou configuration 2
Bonjour le monde 2
Installer PyMongo 2
Créer 3
Mettre à jour 4
Lis 4
Effacer 4
Introduction 6
Examples 6
Utiliser json_util 6
Usage simple 6
JSONOptions 6
Utiliser python-bsonjs 7
Installation 8
Usage 8
Chapitre 3: Filtrer les documents par heure de création stockée dans ObjectId 10
Introduction 10
Examples 10
It is an unofficial and free PyMongo ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official PyMongo.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/fr/home 1
Chapitre 1: Démarrer avec PyMongo
Remarques
Cette section fournit une vue d'ensemble de ce qu'est pymongo et pourquoi un développeur peut
vouloir l'utiliser.
Il devrait également mentionner tous les grands sujets au sein de pymongo, et établir un lien avec
les sujets connexes. La documentation de pymongo étant nouvelle, vous devrez peut-être créer
des versions initiales de ces rubriques connexes.
Examples
Installation ou configuration
Bonjour le monde
Installer PyMongo
https://riptutorial.com/fr/home 2
pip install pymongo
db = client.mydb
col = db.mycollection
MongoDB stocke les enregistrements de données sous forme de documents BSON . BSON est la
représentation binaire de JSON.
$ python
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> col = client.mydb.test
Créer
Insérer un seul document insert_one(document)
https://riptutorial.com/fr/home 3
Insérer plusieurs documents insert_many(documents)
Mettre à jour
Mettre à jour un seul document correspondant au filtre update_one(filter, update, upsert=False)
Lis
Interroger la base de données find(filter=None, projection=None, skip=0, limit=0,
no_cursor_timeout=False) . L'argument de filtre est un document prototype auquel tous les résultats
doivent correspondre.
query={'x':1}
projection={'_id':0, 'x':1} # show x but not show _id
result=col.find(query,projection)
Effacer
https://riptutorial.com/fr/home 4
Supprimer un seul document correspondant au filtre delete_one(filter)
https://riptutorial.com/fr/home 5
Chapitre 2: Conversion entre BSON et JSON
Introduction
Dans de nombreuses applications, les enregistrements de MongoDB doivent être sérialisés au
format JSON. Si vos enregistrements ont des champs de type date, datetime, objectId, binary,
code, etc., vous rencontrez TypeError: not JSON serializable exceptions TypeError: not JSON
serializable lors de l'utilisation de json.dumps . Cette rubrique montre comment surmonter cela.
Examples
Utiliser json_util
json_util fournit deux méthodes d'assistance, des dumps et des loads , qui encapsulent les
méthodes json natives et fournissent une conversion BSON explicite vers et depuis json.
Usage simple
si record est:
{
"_id" : ObjectId("5692a15524de1e0ce2dfcfa3"),
"title" : "Toy Story 4",
"released" : ISODate("2010-06-18T04:00:00Z")
}
{
"_id": {"$oid": "5692a15524de1e0ce2dfcfa3"},
"title" : "Toy Story 4",
"released": {"$date": 1276833600000}
}
JSONOptions
Il est possible de personnaliser le comportement des dumps au moyen d' un JSONOptions objet. Deux
ensembles d'options sont déjà disponibles: DEFAULT_JSON_OPTIONS et STRICT_JSON_OPTIONS .
>>> bson.json_util.DEFAULT_JSON_OPTIONS
JSONOptions(strict_number_long=False, datetime_representation=0,
https://riptutorial.com/fr/home 6
strict_uuid=False, document_class=dict, tz_aware=True,
uuid_representation=PYTHON_LEGACY, unicode_decode_error_handler='strict',
tzinfo=<bson.tz_util.FixedOffset object at 0x7fc168a773d0>)
1. modifiez l'objet DEFAULT_JSON_OPTIONS . Dans ce cas, les options seront utilisées pour tous les
appels suivants aux dumps :
# using strict
dumps(record, json_options=bson.json_util.STRICT_JSON_OPTIONS)
• strict_number_long : Si true, les objets Int64 sont codés dans le type Strict NumberLong
du mode Strict de MongoDB Extended JSON, c'est-à-dire {"$numberLong": "<number>" } .
Sinon, ils seront encodés en int. La valeur par défaut est False.
• datetime_representation : représentation à utiliser lors du codage des instances de
datetime.datetime. 0 => {"$date": <dateAsMilliseconds>} , 1 => {"$date": {"$numberLong":
"<dateAsMilliseconds>"}} , 2 => {"$date": "<ISO-8601>"}
• strict_uuid : Si true, l'objet uuid.UUID est codé dans le type de mode Strict Binary de
MongoDB Extended JSON. Sinon, il sera codé comme {"$uuid": "<hex>" } . La valeur par
défaut est False.
• document_class : Les documents BSON renvoyés par load () seront décodés en une
instance de cette classe. Doit être une sous-classe de collections.MutableMapping. Par
défaut, dict.
• uuid_representation : représentation BSON à utiliser lors du codage et du décodage des
instances de uuid.UUID. La valeur par défaut est PYTHON_LEGACY.
• tz_aware : Si la valeur est true, le type de mode Strict de MongoDB Extended JSON Date
sera décodé en instances de datetime.datetime identifiées par le fuseau horaire. Sinon, ils
seront naïfs. La valeur par défaut est True.
• tzinfo : Une sous-classe datetime.tzinfo qui spécifie le fuseau horaire à partir duquel les
objets datetime doivent être décodés. La valeur par défaut est utc.
Utiliser python-bsonjs
python-bsonjs ne dépend pas de PyMongo et peut offrir une amélioration des performances par
https://riptutorial.com/fr/home 7
rapport à json_util :
bsonjs est environ 10 à 15 fois plus rapide que json_util de PyMongo pour décoder
BSON en JSON et encoder JSON en BSON.
Notez que:
Installation
Usage
Pour tirer pleinement parti des bsonjs, configurez la base de données pour utiliser la classe
RawBSONDocument . Ensuite, utilisez dumps pour convertir des octets bruts bson en json et des loads
pour convertir json en octets bruts bson:
import pymongo
import bsonjs
from pymongo import MongoClient
from bson.raw_bson import RawBSONDocument
Si tout ce dont vous avez besoin est la sérialisation des résultats de mongo dans json, il est
possible d'utiliser le module json , à condition que vous définissiez des gestionnaires
personnalisés pour gérer les types de champs non sérialisables. Un avantage est que vous
disposez de toute la puissance nécessaire pour encoder des champs spécifiques, tels que la
représentation datetime.
https://riptutorial.com/fr/home 8
Voici un gestionnaire qui code les dates en utilisant la représentation iso et l'ID sous forme de
chaîne hexadécimale:
import pymongo
import json
import datetime
import bson.objectid
def my_handler(x):
if isinstance(x, datetime.datetime):
return x.isoformat()
elif isinstance(x, bson.objectid.ObjectId):
return str(x)
else:
raise TypeError(x)
db = pymongo.MongoClient().samples
record = db.movies.find_one()
# {u'_id': ObjectId('5692a15524de1e0ce2dfcfa3'), u'title': u'Toy Story 4',
# u'released': datetime.datetime(2010, 6, 18, 4, 0),}
https://riptutorial.com/fr/home 9
Chapitre 3: Filtrer les documents par heure
de création stockée dans ObjectId
Introduction
Inclut des exemples de requêtes pymongo pour filtrer des documents par horodatage encapsulé
dans ObjectId
Examples
Documents créés dans les 60 dernières secondes
seconds = 60
Si vous vous trouvez dans un autre fuseau horaire, vous devrez peut-être compenser l'heure de la
date et l'heure UTC
seconds = 60
dummy_id = ObjectId.from_datetime(gen_time)
Lire Filtrer les documents par heure de création stockée dans ObjectId en ligne:
https://riptutorial.com/fr/pymongo/topic/9855/filtrer-les-documents-par-heure-de-creation-stockee-
dans-objectid
https://riptutorial.com/fr/home 10
Crédits
S.
Chapitres Contributeurs
No
Démarrer avec
1 Community, Himavanth, Kheshav Sewnundun, tim
PyMongo
Conversion entre
2 Derlin
BSON et JSON
https://riptutorial.com/fr/home 11