MongoDB
Conductor de pitón
Buscar..
Sintaxis
- mongodb: // [username: password @] host1 [: port1] [, host2 [: port2], ... [, hostN [: portN]]] [/ [database] [? options]]
Parámetros
Parámetro | Detalle |
---|---|
hostX | Opcional. Puede especificar tantos hosts como sea necesario. Especificaría varios hosts, por ejemplo, para conexiones a conjuntos de réplicas. |
: portX | Opcional. El valor predeterminado es: 27017 si no se especifica. |
base de datos | Opcional. El nombre de la base de datos para autenticarse si la cadena de conexión incluye credenciales de autenticación. Si no se especifica la base de datos / y la cadena de conexión incluye credenciales, el controlador se autenticará en la base de datos de administración. |
opciones | Opciones específicas de conexión |
Conéctate a MongoDB usando 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()
Consultas de PyMongo
Una vez que tienes un objeto de collection
, las consultas usan la misma sintaxis que en el shell mongo. Algunas diferencias leves son:
Cada llave debe estar entre corchetes. Por ejemplo:
db.find({frequencies: {$exists: true}})
se convierte en
pymongo
(note elTrue
en mayúsculas):db.find({"frequencies": { "$exists": True }})
los objetos como los identificadores de objeto o
ISODate
se manipulan utilizando clases de python. PyMongo usa su propia claseObjectId
para tratar con identificadores de objetos, mientras que las fechas usan el paquete estándar dedatetime
ydatetime
. Por ejemplo, si desea consultar todos los eventos entre 2010 y 2011, puede hacer: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 } }):
Actualizar todos los documentos en una colección usando PyMongo
Digamos que necesita agregar un campo a cada documento en una colección.
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)
El método de find
devuelve un Cursor
, en el que puede iterar fácilmente usando la sintaxis for in
. Luego, llamamos al método de update
, especificando el _id
y que agregamos un campo ( $set
). Los parámetros upsert
y multi
vienen de mongodb ( ver aquí para más información ).