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 el True 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 clase ObjectId para tratar con identificadores de objetos, mientras que las fechas usan el paquete estándar de datetime y datetime . 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 ).



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow