17/1/25, 19:43 Manual_pymongo
Pymongo
Instalación
$ pip install pymongo
Hacer una conexión con una base de
datos.
Para conectarnos tan solo hay que utilizar la clase implementada MongoClient() en la
libreria de pymongo. Es importante recordar que lo mas óptimo es tener abierto solo un
cliente de mongo a la vez, ya que consume muchos recursos esta función.
In [1]: import pymongo
# from pymongo import MongoClient
# El siguinente codigo nos conectará a al puerto y host predeterminado
client = MongoClient()
# Si queremos especificar un host o un puerto ponemos
#client = MongoClient("localhost", 27017)
# Si queremos utlizar un formato URI:
#client = MongoClient("mongodb://localhost:27017/")
print(client)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[1], line 5
1 import pymongo
2 # from pymongo import MongoClient
3
4 # El siguinente codigo nos conectará a al puerto y host predeterminado
----> 5 client = MongoClient()
6 # Si queremos especificar un host o un puerto ponemos
7 #client = MongoClient("localhost", 27017)
8 # Si queremos utlizar un formato URI:
9 #client = MongoClient("mongodb://localhost:27017/")
11 print(client)
NameError: name 'MongoClient' is not defined
Usar una database.
Para acceder a las bases de datos del cliente de mongo, tan solo tenemos que llamar a la
database como metodo del objeto Mongoclient. En otras palabras: accedes a las bases
de datos utilizando un estilo de acceso por atributos en las instancias de MongoClient.
file:///C:/Users/Usuario/Desktop/Mis guias/Manual_pymongo.html 1/4
17/1/25, 19:43 Manual_pymongo
In [ ]: db = client.name_database
# En el caso de que el nombre de tu base de datos tiene un estilo que no
# permite el acceso por atributos, se puede usará el acceso por diccionario
db = client["name-database"]
Usar una colección.
Las colecciones en Mongo son un grupo de documentos almacenados juntos. Se puede
pensar que son el equivalente a una tabla en una base de datos relacional. Para acceder
a ellas, se accede de la misma manera que si fueran una database.
In [ ]: collection = db.name_collection
collection = db["name-collection"]
Un aspecto a tener en cuenta de las colecciones y las bases de datos en Mongo es que
estas se crean de manera "lazy". Esto significa que nada de esto se crea hasta que algún
documento se guarde en estos objetos.
Documentos
En MongoDB los datos se representa en (y almacena) en JSON. En pymongo, este tipo de
documento es representado mediante diccionarios.
Insertar un documento.
Para insertar un documento a una collección usamos los metodos siguientes:
insert_one():
Cuando un documento es añadido, se genera una special key "_id" que se guarda junto
con este documento. El valor de esta llave es único en toda la colección. Después de
haber añadido un documento a una colección, esta se crea en el servidor. Podemos
verificarlo con el comando
db.list_collection_names()
También podemos insertar varisos documentos a una collección usando el siguiente
método. Esta función insertará la lista del primer parametro a la colección y retornará el
objeto entero.
new_posts = [
{
"author": "Mike",
"text": "Another post!",
"tags": ["bulk", "insert"],
"date": datetime.datetime(2009, 11, 12, 11, 14),
},
{
"author": "Eliot",
"title": "MongoDB is fun",
file:///C:/Users/Usuario/Desktop/Mis guias/Manual_pymongo.html 2/4
17/1/25, 19:43 Manual_pymongo
"text": "and pretty easy too!",
"date": datetime.datetime(2009, 11, 10, 10, 45),
},
]
result = posts.insert_many(new_posts)
Find
La forma más básica de una consulta(query) es usando la siguiente función
find_one(): Este método devuelve un documento que concuerda con la consulta(o
None si no hay coincidencia). Este método es útil cuando sabes que solo hay un
resultado. En caso de que exista mas de un documento que coincida con la query,
devolverá el primer resultado.
Consultar mas de un documento
Para conseguir mas de un documento como resultado de una consulta usaremos el
método .find(). Este método nos devuelve un Cursor que nos permitirá iterar sobre todos
los elementos que coincidan con la query.
for post in posts.find():
print(post)
Contadores
En caso de querer saber cuantos documentos concuerdan con la query, podemos usar la
operación .count_documents y dará como resultado el número de documentos que
concuerden.
Indexing
Añadir indíces puede acelerar determinadas consultas y puede añadir funcionalidad para
las consultas y para almacenar documentos.
In [ ]:
Async Tutorial
Cuando es asyncrona se refiere a un conjunto de métodos que permiten interactuar con
la base de datos de manera no bloqueante, es decir, las operaciones no detinen la
ejecución del programa mientras esperan una respuesta del servidor. Esto mejora la
eficencia en las aplicaciones donde las consultas a la base de datos pueden ser lentas o
necesitan manejar múltiples tareas simultáneamente.
file:///C:/Users/Usuario/Desktop/Mis guias/Manual_pymongo.html 3/4
17/1/25, 19:43 Manual_pymongo
No bloquenate: las llamadas a la API regresan inmediatamente con un objeto o
promesa que se completará en el futuro.
Uso eficiente de rrecursos: Permite que el hilo principal continúe ejecutando otras
tareas mientras espera las respuestas de la base de datos.
In [ ]: from pymongo import AsyncMongoclient
client = AsyncMongoclient()
await client.drop_database("name-database")
Conectarse a un cliente asyncrono.
Se hace de la misma manera que en un cliente sincróno, con la única diferencia de que el
objeto de trabajo es el AsyncMongoClient()
file:///C:/Users/Usuario/Desktop/Mis guias/Manual_pymongo.html 4/4