MongoDB Find: buscar documentos en colecciones

Con los comandos MongoDB Find y Find One, se pueden localizar todos o algunos documentos que coinciden con ciertos parámetros de búsqueda. Los comandos también pueden utilizarse con Python o Node.js.

¿Qué es el comando MongoDB find y para qué sirve?

Si ya tienes conocimientos básicos sobre MongoDB, debes saber que el sistema de gestión de bases de datos funciona de forma un poco diferente a las bases de datos relacionales clásicas, como por ejemplo MySQL. Aunque MongoDB también crea bases de datos, no almacena los datos en tablas sino en documentos, que a su vez se combinan en las denominadas colecciones. Esto plantea la cuestión de cómo se pueden buscar y visualizar los datos correspondientes. Para ello, el sistema conoce dos comandos MongoDB básicos: Find y Find One. Estos crean un cursor con todos o ciertos documentos que coinciden con los parámetros definidos en la búsqueda.

La sintaxis del comando Find

Para entender el comando Find y su funcionamiento, primero debes echar un vistazo a su sintaxis básica, que tiene el siguiente aspecto:

db.collection.find
(
<query>,</query>
<projection></projection>
)

Además del comando propiamente dicho, Find contiene dos parámetros que se indican entre los dos pares de diples que tiene justo después. <query> es un parámetro de filtro con el que se puede concretar la búsqueda. El segundo parámetro, <projection>, es opcional y especifica qué aspectos de los documentos que coinciden deben ser emitidos.

Ejemplo del comando Find

Como ejemplo, imagina que tienes una lista de tus clientes en España y la quieres encontrar con el comando MongoDB Find. La lista se encuentra en la base de datos “clientes” con el formato de una colección. Si quieres obtener una visión general de todos los documentos, utiliza el comando find, omite <projection> y deja también vacío el parámetro <query>. El código correspondiente tiene el siguiente aspecto:

>use clientes
switched to db clientes
>db.lista_españa.find();
>

Una vez ejecutado, obtendrás la lista completa de clientes en España, incluyendo toda la información que hayas almacenado sobre ellos. Los documentos van siempre precedidos de su número _id personal, que permite al sistema identificar cada documento con precisión.

Ejemplo del comando Find con parámetros

Aunque obtener todos los documentos con la ayuda del comando Find pueda ser muy útil, este comando se ha diseñado especialmente para filtrar y encontrar documentos concretos. Los parámetros mencionados anteriormente te ayudan a llevarlo a cabo. Supón que se almacena la siguiente información para cada cliente y esta puede ser consultada cuando haga falta:

"_id": ObjectID,
"name": "García"
"adress": "Calle Ejemplo 10"
"city": "Valencia"

Si lo que quieres es filtrar tu base de datos con cientos de clientes de diferentes ciudades para averiguar, por ejemplo, quiénes son de Madrid, haz lo siguiente:

Db.lista_españa.find({"city": "Madrid"})

Al ejecutar la línea de código, el sistema procede a filtrar todas las entradas de la colección “lista_españa”, pero únicamente mostrará los resultados que tengan Madrid como parámetro de ciudad.

Ejemplo del comando Find One

Además de la opción general Find, con la que se pueden solicitar todos o solo determinados documentos, el sistema también dispone del comando MongoDB Find One. Este comando te muestra un solo documento que coincide con los criterios exigidos. Se selecciona el primer documento que aparece en la lista. Si no hay ningún documento que cumpla con tus criterios de búsqueda, la respuesta será “Null”. La sintaxis de Find One es similar a la de Find:

db.collection.findOne
(
<query>,</query>
<projection></projection>
)

Aquí <query> también define los criterios de búsqueda y el parámetro <projection> permite especificar qué campos del resultado se muestran. Si aplicas el comando Find One al ejemplo anterior, el resultado es el siguiente:

>use clientes
switched to db clientes
>db.lista_españa.findOne();
>

A continuación, recibirás la primera entrada de tu lista de clientes en España.

El comando MongoDB Find con Node.js y Python

También puedes utilizar MongoDB con Node.js o Python. En estos casos, el comando Find tiene un aspecto un poco diferente, pero la funcionalidad básica sigue siendo la misma.

El comando Find One en Python

PyMongo es un controlador popular de MongoDB que permite trabajar con Python. Si se utiliza este controlador, el comando Find One tiene un aspecto parecido a este:

import pymongo
myclient = pymongo.MongoClient ("mongodb://localhost:24137/")
mydb = myclient ["clientes"]
mycol = mydb ["lista_españa"]
x = myco.find_one()
print ( x )

El comando Find One con Node.js

El entorno de ejecución de JavaScript Node.js también puede utilizarse en MongoDB. Si quieres ejecutar el comando Find One en Node.js, el código tiene el siguiente aspecto:

var MongoClient = require ('mongodb').MongoClient;
var url = "mongodb://localhost:24137/";
MongoClient.connect (url, function (err, db) {
if (err) throw err;
var dbo = db.db ("mydb");
dbo.collection ("lista_españa").findOne ( {}, function (err, result) {
if (err) throw err;
console-log (result.name);
db.close();
} );
} );
Consejo

¿Quieres ordenar tus documentos en MongoDB y así tener una mejor visión general? Para ello, utiliza el comando MongoDB Sort, que te los ordenará inmediatamente.

¿Le ha resultado útil este artículo?
Page top