Find en Python MONGODB

En Python, puedes usar la biblioteca pymongo para conectarte a una base de datos MongoDB y realizar consultas utilizando el método find(). La función find() te permite buscar documentos dentro de una colección MongoDB que cumplan con ciertos criterios de búsqueda.

  • En MongoDB utilizamos los métodos find y findOne para buscar datos en una colección.
  • Al igual que la instrucción SELECT se usa para encontrar datos en una tabla en una base de datos MySQL.

find_one () para seleccionar datos en una colección en MongoDB

Para seleccionar datos de una colección en MongoDB, podemos usar el método find_one(). El método find_one() devuelve la primera aparición en la selección.

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient[ "bbdd"]
mycol = mydb[ "Clientes"]

x = mycol.find_one()

print(x)

En este ejemplo, primero te conectas a la base de datos MongoDB utilizando pymongo.MongoClient() y especificas la URL de conexión («mongodb://localhost:12345/»). Luego, seleccionas la base de datos «bbdd» y la colección «Clientes».

Después, utilizas mycol.find_one() para buscar un documento en la colección «Clientes». En este caso, no se proporciona ningún criterio de búsqueda, por lo que find_one() devolverá el primer documento que encuentre en la colección.

Finalmente, imprimes el documento encontrado utilizando print(x).

Recuerda que find_one() devuelve un solo documento (el primero que cumpla con los criterios de búsqueda), mientras que find() devuelve un cursor que puedes iterar para obtener todos los documentos que cumplan con los criterios. Si solo necesitas un único documento o el primero que encuentre, find_one() es una opción adecuada. Si necesitas varios documentos o todos los que cumplan con los criterios, entonces debes usar find().


Método find() para encontrar todos los datos en una colección en MongoDB

Para seleccionar datos de una tabla en MongoDB, también podemos usar el método find().

El método find() devuelve todas las apariciones en la selección.

El primer parámetro del método find() es un objeto de consulta. En este ejemplo, utilizamos un objeto de consulta vacío, que selecciona todos los documentos de la colección. Ningún parámetro en el método find() le da el mismo resultado que SELECT * en MySQL.

Ejemplo find() MongoDB

Devuelva todos los documentos de la colección de «clientes» e imprima cada documento:

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient[ "bbdd"]
mycol = mydb[ "Clientes"]

  for x in mycol.find():

print(x)

En este caso, la función mycol.find() devuelve un cursor que contiene todos los documentos de la colección «Clientes». Al utilizar un bucle for, se itera sobre el cursor y en cada iteración se obtiene un documento, que luego se imprime con print(x).

Recuerda que find() sin ningún argumento devuelve todos los documentos de la colección. Si deseas filtrar los documentos que se seleccionan, puedes proporcionar un diccionario con los criterios de búsqueda como argumento en find().

Por ejemplo, si quisieras seleccionar solo los documentos donde el campo «edad» es igual a 30, puedes hacerlo así:

for x in mycol.find({ "edad": 30}):
    print(x)

Esto seleccionará e imprimirá solo los documentos que cumplan con el criterio de tener un campo «edad» igual a 30.


Devuelve solo algunos campos

El segundo parámetro del método find() es un objeto que describe qué campos incluir en el resultado. Este parámetro es opcional, y si se omite, todos los campos se incluirán en el resultado.

Ejemplo


En este ejemplo, se utiliza el método find() en pymongo para seleccionar todos los documentos de la colección «Clientes» de la base de datos «bbdd» en MongoDB, pero con un filtro de proyección para incluir solo los campos «nombre» y «direccion» en el resultado, excluyendo el campo «id».

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient[ "bbdd"]
mycol = mydb[ "Clientes"]

# Proyección para incluir solo los campos "nombre" y "direccion", excluyendo el campo "id"
for x in mycol.find({},{  "id": 0,  "nombre": 1,  "direccion": 1 }):
  print(x)

Explicación del código paso a paso:

  • Importas el módulo pymongo.
  • Estableces la conexión a la base de datos MongoDB utilizando pymongo.MongoClient() y especificas la URL de conexión "mongodb://localhost:12345/".
  • Seleccionas la base de datos «bbdd» utilizando myclient[«bbdd»].
  • Seleccionas la colección «Clientes» utilizando mydb[«Clientes»].
  • Utilizas mycol.find({}, {«id»: 0, «nombre»: 1, «direccion»: 1}) para realizar la consulta. El primer argumento {} representa los criterios de búsqueda (en este caso, vacío), lo que significa que seleccionas todos los documentos en la colección. El segundo argumento es el filtro de proyección, donde especificas qué campos deseas incluir (1) o excluir (0) en el resultado. Aquí estás incluyendo los campos «nombre» y «direccion» (1) y excluyendo el campo «id» (0).
  • Utilizas un bucle for para iterar sobre los resultados y mostrar cada documento. El objeto x contiene cada documento seleccionado con solo los campos «nombre» y «direccion» mostrados.

Ejemplo

Este ejemplo excluirá «dirección» del resultado: En este ejemplo se está utilizando el método find() en pymongo para seleccionar todos los documentos de la colección «Clientes» de la base de datos «bbdd» en MongoDB, pero con un filtro de proyección para excluir el campo «direccion» en el resultado.

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient[ "bbdd"]
mycol = mydb[ "Clientes"]

for x in mycol.find({},{  "direccion": 0 }):
  print(x)

Explicación paso a paso:

  • Importas el módulo pymongo.
  • Estableces la conexión a la base de datos MongoDB utilizando pymongo.MongoClient() y especificas la URL de conexión «mongodb://localhost:12345/».
  • Seleccionas la base de datos «bbdd» utilizando myclient[«bbdd»].
  • Seleccionas la colección «Clientes» utilizando mydb[«Clientes»].
  • Utilizas mycol.find({}, {«direccion»: 0}) para realizar la consulta. El primer argumento {} representa los criterios de búsqueda (en este caso, vacío), lo que significa que seleccionas todos los documentos en la colección. El segundo argumento es el filtro de proyección, donde especificas qué campos deseas incluir (1) o excluir (0) en el resultado. Aquí estás excluyendo el campo «direccion» al poner 0.
  • Utilizas un bucle for para iterar sobre los resultados y mostrar cada documento. El objeto x contiene cada documento seleccionado con el campo «direccion» excluido en el resultado.

Ejemplo

Recibirá un error si especifica valores 0 y 1 en el mismo objeto (excepto si uno de los campos es el campo _id):

import pymongo

myclient = pymongo.MongoClient( "mongodb://localhost:12345/")
mydb = myclient[ "bbdd"]
mycol = mydb[ "Clientes"]

for x in mycol.find({},{ "nombre": 1,  "direccion": 0 }):
  print(x)