Con los comandos MongoDB Find y Find One, se pueden localizar todos o algunos do­cu­me­n­tos que coinciden con ciertos pa­rá­me­tros de búsqueda. Los comandos también pueden uti­li­zar­se con Python o Node.js.

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

Si ya tienes co­no­ci­mie­n­tos 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 re­la­cio­na­les clásicas, como por ejemplo MySQL. Aunque MongoDB también crea bases de datos, no almacena los datos en tablas sino en do­cu­me­n­tos, que a su vez se combinan en las de­no­mi­na­das co­le­c­cio­nes. Esto plantea la cuestión de cómo se pueden buscar y vi­sua­li­zar los datos co­rre­s­po­n­die­n­tes. Para ello, el sistema conoce dos comandos MongoDB básicos: Find y Find One. Estos crean un cursor con todos o ciertos do­cu­me­n­tos que coinciden con los pa­rá­me­tros definidos en la búsqueda.

La sintaxis del comando Find

Para entender el comando Find y su fu­n­cio­na­mie­n­to, 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 pro­pia­me­n­te dicho, Find contiene dos pa­rá­me­tros 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, <pro­je­c­tion>, es opcional y es­pe­ci­fi­ca qué aspectos de los do­cu­me­n­tos 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 do­cu­me­n­tos, utiliza el comando find, omite <pro­je­c­tion> y deja también vacío el parámetro <query>. El código co­rre­s­po­n­die­n­te 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, in­clu­ye­n­do toda la in­fo­r­ma­ción que hayas al­ma­ce­na­do sobre ellos. Los do­cu­me­n­tos van siempre pre­ce­di­dos de su número _id personal, que permite al sistema ide­n­ti­fi­car cada documento con precisión.

Ejemplo del comando Find con pa­rá­me­tros

Aunque obtener todos los do­cu­me­n­tos con la ayuda del comando Find pueda ser muy útil, este comando se ha diseñado es­pe­cia­l­me­n­te para filtrar y encontrar do­cu­me­n­tos concretos. Los pa­rá­me­tros me­n­cio­na­dos an­te­rio­r­me­n­te te ayudan a llevarlo a cabo. Supón que se almacena la siguiente in­fo­r­ma­ción para cada cliente y esta puede ser co­n­su­l­ta­da 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 di­fe­re­n­tes 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 úni­ca­me­n­te mostrará los re­su­l­ta­dos 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 de­te­r­mi­na­dos do­cu­me­n­tos, el sistema también dispone del comando MongoDB Find One. Este comando te muestra un solo documento que coincide con los criterios exigidos. Se se­le­c­cio­na 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 <pro­je­c­tion> permite es­pe­ci­fi­car 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 co­n­ti­nua­ció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 fu­n­cio­na­li­dad básica sigue siendo la misma.

El comando Find One en Python

PyMongo es un co­n­tro­la­dor popular de MongoDB que permite trabajar con Python. Si se utiliza este co­n­tro­la­dor, 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 Ja­va­S­cri­pt Node.js también puede uti­li­zar­se 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 do­cu­me­n­tos en MongoDB y así tener una mejor visión general? Para ello, utiliza el comando MongoDB Sort, que te los ordenará in­me­dia­ta­me­n­te.

Ir al menú principal