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 elTrueen mayúsculas):db.find({"frequencies": { "$exists": True }})los objetos como los identificadores de objeto o
ISODatese manipulan utilizando clases de python. PyMongo usa su propia claseObjectIdpara tratar con identificadores de objetos, mientras que las fechas usan el paquete estándar dedatetimeydatetime. 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 ).