Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Especifica un query

La mayoría de las operaciones CRUD permiten limitar el conjunto de documentos coincidentes mediante la especificación de criterios de coincidencia en un documento de consulta. Los documentos de consulta contienen uno o más operadores de consulta que se aplican a campos específicos que determinan qué documentos se incluirán en el conjunto de resultados.

En un documento de query, puedes comparar campos con valores literales, como { title: 'The Room' }o puedes redactar operadores del query para expresar criterios de coincidencia más complejos. En esta guía, cubrimos las siguientes categorías de operadores del query en MongoDB y mostramos ejemplos sobre cómo usarlos:

Para seguir los ejemplos de esta guía, utilice el siguiente fragmento de código para insertar documentos que describan frutas en la colección myDB.fruits:

const myDB = client.db("myDB");
const myColl = myDB.collection("fruits");
await myColl.insertMany([
{ "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
{ "_id": 2, "name": "bananas", "qty": 7, "rating": 1, "color": "yellow" },
{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
{ "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
]);

Nota

Tu operación de consulta puede devolver una referencia a un cursor que contenga documentos coincidentes. Para aprender a examinar los datos almacenados en el cursor, consulta el Acceder a los datos desde una página de cursor.

Las consultas de valor literal permiten consultar datos que coinciden exactamente con el valor proporcionado en el documento de consulta. Una consulta de valor literal consta de dos partes: un nombre de campo y un valor. Los documentos devueltos por esta consulta deben contener un campo con el mismo nombre que el proporcionado y un valor para dicho campo que coincida exactamente con el valor proporcionado. La siguiente operación utiliza una consulta literal para buscar documentos que contengan un campo llamado "nombre" con el valor "manzanas":

const query = { "name": "apples" };
const cursor = myColl.find(query);
for await (const doc of cursor) {
console.dir(doc);
}

Este fragmento de código devuelve los siguientes resultados:

{ "_id": 1, "name": "apples", "qty": 5, "rating": 3 }

Nota

Las consultas de valores literales son equivalentes al operador de comparación $eq. Como resultado, las siguientes dos consultas son equivalentes:

myColl.find({
rating: { $eq: 5 }
});
myColl.find({
rating: 5
});

Los operadores de comparación permiten consultar datos basándose en comparaciones con valores de una colección. Los operadores de comparación comunes incluyen $gt para comparaciones "mayores que", $lt para comparaciones "menores que" y $ne para comparaciones "diferentes a". La siguiente operación utiliza el operador de comparación $gt para buscar documentos en los que el valor del campo qty sea mayor que 5 y los imprime:

// $gt means "greater than"
const query = { qty: { $gt : 5 } };
const cursor = myColl.find(query);
for await (const doc of cursor) {
console.dir(doc);
}

Este fragmento de código devuelve los siguientes resultados:

{ "_id": 2, "name": "bananas", "qty": 7, "rating": 1 }
{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 }

Los operadores lógicos le permiten query para datos utilizando lógica aplicada a los resultados de los operadores a nivel de campo. Por ejemplo, puedes usar el método $or para consultar documentos que coincidan con un operador de comparación $gt o una query de valor literal. La siguiente operación utiliza el operador lógico $not para buscar documentos con un valor de cantidad que no sea mayor que 5 y los imprime:

const query = { qty: { $not: { $gt: 5 }}};
const cursor = myColl.find(query);
for await (const doc of cursor) {
console.dir(doc);
}

Este fragmento de código devuelve los siguientes resultados:

{ "_id": 4, "name": "avocados", "qty": 3, "rating": 5 }
{ "_id": 1, "name": "apples", "qty": 5, "rating": 3 }

Nota

Cuando un documento de consulta contiene varios elementos, estos se combinan con un operador lógico implícito $and para determinar qué documentos coinciden con la consulta. Como resultado, las dos consultas siguientes son equivalentes:

myColl.find({
rating: { $eq: 5 },
qty: { $gt: 4 }
});
myColl.find({
$and: [
{ rating: { $eq: 5 }},
{ qty: { $gt: 4 }}
]
});

Para obtener más información sobre los operadores de comparación, consulte la entrada del manual de referencia Operadores de consulta de comparación.

Los operadores de elemento te permiten consultar en función de la presencia, ausencia o tipo de un campo. La siguiente operación utiliza el operador de elemento $exists para buscar documentos que contengan el campo color:

const query = { color: { $exists: true } };
const cursor = myColl.find(query);
for await (const doc of cursor) {
console.dir(doc);
}

Este fragmento de código devuelve los siguientes resultados:

{ "_id": 2, "name": "bananas", "qty": 7, "rating": 1, "color": "yellow" }

Para obtener más información sobre este operador, véase la entrada del manual de referencia para el operador $exists.

Los operadores de evaluación permiten ejecutar lógica de nivel superior, como consultas de regex y texto, al consultar documentos en una colección. Los operadores comunes de evaluación incluyen $regex y $text. La siguiente operación utiliza el operador de evaluación $mod para buscar documentos en los que el valor del campo qty sea divisible por 3 con un resto de 0:

// $mod means "modulo" and returns the remainder after division
const query = { qty: { $mod: [ 3, 0 ] } };
const cursor = myColl.find(query);
for await (const doc of cursor) {
console.dir(doc);
}

Este fragmento de código devuelve los siguientes resultados:

{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 }
{ "_id": 4, "name": "avocados", "qty": 3, "rating": 5 }

Para obtener más información sobre este operador, consulta la entrada del manual de referencia para el operador $mod.

Volver

Especifique los campos a devolver

En esta página