MongoDB
Pilote Python
Recherche…
Syntaxe
- mongodb: // [nom d'utilisateur: mot de passe @] host1 [: port1] [, host2 [: port2], ... [, hostN [: portN]]] [/ [base de données] [? options]]
Paramètres
Paramètre | Détail |
---|---|
hostX | Optionnel. Vous pouvez spécifier autant d'hôtes que nécessaire. Vous devez spécifier plusieurs hôtes, par exemple, pour les connexions aux jeux de réplicas. |
: portX | Optionnel. La valeur par défaut est: 27017 si non spécifié. |
base de données | Optionnel. Le nom de la base de données à authentifier si la chaîne de connexion inclut des informations d'authentification. Si / database n'est pas spécifié et que la chaîne de connexion inclut des informations d'identification, le pilote s'authentifiera dans la base de données admin. |
? options | Options spécifiques à la connexion |
Connectez-vous à MongoDB en utilisant 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 interroge
Une fois que vous avez un objet de collection
, les requêtes utilisent la même syntaxe que dans le shell mongo. Quelques légères différences sont:
chaque clé doit être entre crochets. Par exemple:
db.find({frequencies: {$exists: true}})
devient en
pymongo
(notez leTrue
en majuscule):db.find({"frequencies": { "$exists": True }})
Les objets tels que les identificateurs d'objet ou
ISODate
sont manipulés à l'aide de classes python. PyMongo utilise sa propre classeObjectId
pour traiter les identifiants d'objet, tandis que les dates utilisent le package standarddatetime
. Par exemple, si vous souhaitez interroger tous les événements entre 2010 et 2011, vous pouvez effectuer les opérations suivantes: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 } }):
Mettre à jour tous les documents d'une collection en utilisant PyMongo
Disons que vous devez ajouter un champ à chaque document d'une 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)
La méthode find
renvoie un Cursor
sur lequel vous pouvez facilement parcourir le syntaxe de for in
. Ensuite, nous appelons la méthode update
, en spécifiant le _id
et en ajoutant un champ ( $set
). Les paramètres upsert
et multi
proviennent de mongodb ( voir ici pour plus d'informations ).