Puntos clave: 23 operadores comunes de consulta MongoDB Permite consultas avanzadas de datos a través de varios tipos, incluyendo operadores de comparación, lógicos y de array, con ejemplos prácticos que ilustran su uso.
- Operadores como $eq, $gt y $lt comparan los valores de los documentos.
- Operadores lógicos como $and y $or combinan múltiples condiciones de consulta.
En este artículo, echaremos un vistazo a los operadores de consulta de MongoDB más utilizados. Explicaremos qué hacen y luego compartiremos ejemplos para te pueda Ve cómo funcionan.
Conoce más sobre cómo los operadores de proyección pueden optimizar el rendimiento de las consultas:
Acerca de los operadores de consulta de MongoDB
¿Cuáles son los operadores en MongoDB?
Los operadores MongoDB son símbolos o palabras clave especiales que pueden usarse para interactuar con la base de datos. Indican a un compilador o a un intérprete que realice operaciones matemáticas o lógicas.
Los operadores de consulta mejoran la funcionalidad de MongoDB permitiendo a los desarrolladores Crea consultas complejas para interactuar con conjuntos de datos que coinciden con sus aplicaciones.
Empezar con AIOps están fácil. Gestiona la creciente complejidad de TI con inteligencia artificial para la operación empresarial ›
¿Cuáles son los diferentes tipos de operadores de consulta en MongoDB?
MongoDB ofrece los siguientes tipos de operadores de consulta:
- Operadores de comparación
- Operadores lógicos
- Operadores de elementos
- Operadores de evaluación
- Operadores geoespaciales
- Operadores de array
- Operadores bit a bit
- Operadores de comentarios
¿Cómo pueden te utiliza operadores de consulta en MongoDB?
Los operadores de MongoDB pueden usarse con cualquier comando MongoDB compatible. Si se usan correctamente, los comandos básicos de Mongo Shell pueden Reduce la carga de consultas controlando los campos incluidos y excluidos. El resultado están una mejora en el rendimiento.
Ejemplos de operadores de consulta de MongoDB
Ahora, veamos los operadores de consulta de MongoDB más usados. (No los tocaremos todos, son muchos.) Vamos a utilizar el siguiente conjunto de datos con la función find() para demostrar la funcionalidad de cada operador.
Base de datos: supermercado
Cobros: empleados, inventario, pagos, promoción
use supermarket
db.employees.find()
db.inventory.find()
db.payments.find()
db.promo.find()
Conjunto de datos:
Operadores de comparación en MongoDB
Los operadores de comparación de MongoDB pueden usarse para comparar valores en un documento. La siguiente tabla contiene los operadores de comparación más comunes.
| Operador | Descripción |
| $eq | Coincide con valores que son iguales al valor dado. |
| $gt | Coincide si los valores son mayores que el valor dado. |
| $lt | Coincide si los valores son menores que el valor dado. |
| $gte | Coincide si son valores mayores o iguales al valor dado. |
| $lte | Coincide si son valores menores o iguales al valor dado. |
| $in | Coincide con cualquiera de los valores de un array. |
| $ne | Coincide con valores que no son iguales al valor dado. |
| $nin | No coincide con ninguno de los valores especificados en un array. |
El operador $eq añade claridad a la consulta para que coincidan documentos donde el valor de un campo están específico — tus resultados coincidirán con un valor especificado.
En este ejemplo de operador de $eq, recuperamos el documento con el valor exacto de _id "LS0009100".
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
Resultado:
Operadores de $gt y $lt
Estos dos operadores relacionados devolven resultados que son "mayores que" y "menores que" valores especificados.
En este ejemplo de $gt operador, recuperamos los documentos donde la 'cantidad' están mayor que 5000.
db.inventory.find({"quantity": { $gt: 5000}}).pretty()
Resultado:
Busquemos los documentos con la 'cantidad' inferior a 5000 usando el operador $lt.
db.inventory.find({"quantity": { $lt: 5000}}).pretty()
Resultado:
Operadores de $gte y $lte
Estos operadores refinan los dos anteriores sumando el parámetro "igual a", de modo que te Obtén resultados que incluyen y son entre dos valores.
Busca documentos con 'cantidad' mayor o igual a 12.000 usando el siguiente ejemplo de operador $gte.
db.inventory.find({"quantity": { $gte: 12000}}).pretty()
Resultado:
La siguiente consulta devuelve documentos donde la cantidad está igual o menor que 1000.
db.inventory.find({"quantity": { $lte: 1000}}).pretty()
Resultado:
Operadores de $in y $nin
Los operadores $in y $nin devolven resultados donde el valor están o no en un conjunto de valores — que coincide o no con un array especificado.
La siguiente consulta devuelve documentos donde el campo precio contiene los valores indicados.
db.inventory.find({"price": { $in: [3, 6]}}).pretty()
Resultado:
Si te quieres encontrar documentos cuyos campos de precio no contengan los valores dados, utiliza la siguiente consulta.
db.inventory.find({"price": { $nin: [5.23, 3, 6, 3.59, 4.95]}}).pretty()
Resultado:
El operador $ne devuelve resultados que coinciden con valores que no son iguales al valor dado, lo cual están útil para excluir lo que no están relevante para tu consulta.
Busca documentos donde el valor del campo de precio no están igual a 5,23 en la colección de inventario.
db.inventory.find({"price": { $ne: 5.23}})
Resultado:
Operadores lógicos en MongoDB
Los operadores lógicos de MongoDB pueden usarse para filtrar datos basándose en condiciones dadas. Estos operadores proporcionan una forma de combinar múltiples condiciones. Cada operador equipara la condición dada a un valor verdadero o falso.
Aquí son los ejemplos de operadores lógicos de MongoDB:
| Operador | Descripción |
| $and | Une dos o más consultas con un AND lógico y devuelve los documentos que cumplen todas las condiciones. |
| $or | Une dos o más consultas con un OR lógico y devuelve los documentos que coincidan con cualquiera de las consultas. |
| $nor | Lo opuesto al operador OR. El operador lógico NOR unirá dos o más consultas y devolverá documentos que no coincidan con las condiciones de consulta dadas. |
| $not | Devuelve los documentos que no coinciden con la expresión de consulta dada. |
Para Obtén resultados que respondan a dos o más consultas, únelas con el operador $and.
Encuentra documentos que cumplan ambas condiciones
- job_role están igual a "almacena Asociado"
- emp_age están entre los 20 y los 30 años
db.employees.find({ $and: [{"job_role": "Store Associate"}, {"emp_age": {$gte: 20, $lte: 30}}]}).pretty()
Resultado:
Operadores de $or y $nor
Para resultados que coinciden con una consulta, o una de muchas consultas, utiliza el operador lógico $or. Para resultados que no coinciden con ninguna de las consultas, utiliza el operador $nor.
Busca documentos que cumplan cualquiera de las siguientes condiciones.
- job_role están igual a "Cajero Senior" o "Gerente de almacena"
- job_role están igual a "Cajero Senior" o "Gerente de almacena"
db.employees.find({ $or: [{"job_role": "Senior Cashier"}, {"job_role": "Store Manager"}]}).pretty()
Resultado:
Busca documentos que no cumplan ninguna de las siguientes condiciones.
- job_role están igual a "Cajero Senior" o "Gerente de almacena"
db.employees.find({ $nor: [{"job_role": "Senior Cashier"}, {"job_role": "Store Manager"}]}).pretty()
Resultado:
Cuando te quieres excluir resultados específicos, te puede especificar el parámetro de exclusión con el operador $not.
Busca documentos donde no coincidan con la condición dada.
- emp_age están no mayor ni igual a 40
db.employees.find({ "emp_age": { $not: { $gte: 40}}})
Resultado:
Operadores de elementos en MongoDB
Los operadores de consulta de MongoDB de elementos se son utilizados para identificar documentos utilizando los campos del documento. La tabla que se muestra a continuación lista los operadores de elementos actuales.
| Operador | Descripción |
| $exists | Empareja documentos que tengan el campo especificado. |
| $type | Coincide con documentos según el tipo de campo especificado. Estos tipos de campo son tipos BSON especificados y pueden definirse por número de tipo o alias. |
utiliza el operador de $exists filtrar documentos que tienen un campo específico.
Busca documentos donde exista el campo job_role y sea igual a "Cajero".
db.employees.find({ "emp_age": { $exists: true, $gte: 30}}).pretty()
Resultado:
Buscar documentos con un campo de dirección. (Como el conjunto de datos actual no contiene un campo de dirección, la salida será nula.)
db.employees.find({ "address": { $exists: true}}).pretty()
Resultado:
Cuando los objetos de la base de datos son anotados por tipo en una notación BSON, utiliza al operador $type filtrar los resultados según un tipo específico y deseado de objeto.
La siguiente consulta devuelve documentos si el campo emp_age están de doble tipo. Si especificamos un tipo de dato diferente, no se devolverán documentos aunque el campo exista, ya que no corresponde al tipo de campo correcto.
db.employees.find({ "emp_age": { $type: "double"}})
Resultado:
db.employees.find({ "emp_age": { $type: "bool"}})
Resultado:
Operadores de evaluación en MongoDB
Los operadores de evaluación de MongoDB pueden evaluar la estructura de datos general o el campo individual en un documento. Solo son analizamos la funcionalidad básica de estos operadores, ya que cada uno puede considerarse una funcionalidad avanzada de MongoDB. Aquí están una lista de operadores de evaluación comunes en MongoDB.
| Operador | Descripción |
| $jsonSchema | Valida el documento según el esquema JSON indicado. |
| $mod | Coincide con documentos donde el valor de un campo dado está igual al resto tras dividirse por un valor especificado. |
| $regex | Selecciona documentos que coincidan con la expresión regular dada. |
| $text | Realiza una búsqueda de texto en el campo indicado. La búsqueda solo puede realizarse si el campo está indexado con un índice de texto. |
| $where | Coincide con documentos que satisfacen una expresión JavaScript. |
$jsonSchema Operador
Valida un documento mediante su esquema JSON usando el operador $jsonSchema para especificar tu parámetro.
Encuentra documentos que coincidan con el siguiente esquema JSON en la colección promocional.
La agregación $let están usa para vincular las variables a un objeto de resultados para obtener una salida más sencilla. En el esquema JSON, hemos especificado el valor mínimo para el campo "periodo" como 7, lo que filtrará cualquier documento con un valor menor.
let promoschema = {
bsonType: "object",
required: [ "name", "period", "daily_sales" ],
properties: {
"name": {
bsonType: "string",
description: "promotion name"
},
"period": {
bsonType: "double",
description: "promotion period",
minimum: 7,
maximum: 30
},
"daily_sales": {
bsonType: "array"
}
}
}
db.promo.find({ $jsonSchema: promoschema }).pretty()
Resultado:
Selecciona resultados con el operador $mod, que divide el valor de un campo entre un número específico y el resto.
Busca documentos donde el resto están 1000 cuando se dividen entre 3000 en la colección de inventario.
Cabe señalar que el documento "Leche desnatada – 1lt" está incluido en la producción porque la cantidad está 1000, que no puede dividirse entre 3000, y el resto está 1000.
db.inventory.find({"quantity": {$mod: [3000, 1000]}}).pretty()
Resultado:
utiliza el operador de $regex para una expresión regular con la capacidad de emparejamiento de patrones dentro de cadenas.
Busca documentos que contengan la palabra "Empaquetado" en el campo de nombre de la colección de inventario.
db.inventory.find({"name": {$regex: '.Packed.'}}).pretty()
Resultado:
Para encontrar resultados que contengan una palabra o frase, utiliza el operador de $text para una búsqueda de texto.
Encuentra documentos usando un texto buscando "No Graso" en el campo de nombre. Si el campo no están indexado, te debe Crea un índice de texto antes de buscar.
db.inventory.createIndex({ "name": "text"})
Resultado:
db.inventory.find({ $text: { $search: "Non-Fat"}}).pretty()
Resultado:
Para emparejar resultados con una expresión JavaScript, utiliza el operador $where.
Busca documentos de la colección "payments" donde el campo _id están un tipo de cadena y es igual al hash md5 definido como una función JavaScript.
db.payments.find({ $where: function() { var value = isString(this._id) && hex_md5(this._id) == '57fee1331906c3a8f0fa583d37ebbea9'; return value; }}).pretty()
Resultado:
Operadores de array en MongoDB
Los operadores de array de MongoDB son diseñados para consultar documentos con arrays. Aquí son los operadores de array proporcionados por MongoDB.
| Operador | Descripción |
| $all | Empareja arrays que contienen todos los valores especificados en la condición de consulta. |
| $size | Coincide con los documentos si el tamaño del array está igual al tamaño especificado en una consulta. |
| $elemMatch | Coincide con documentos que cumplen condiciones de $elemMatch especificadas dentro de cada elemento del array. |
Para un array que contiene todos los valores especificados en una condición de consulta, utiliza el operador $all.
Busca documentos donde el campo del array de categorías contenga valores "sanos" y "orgánicos".
db.inventory.find({ "category": { $all: ["healthy", "organic"]}}).pretty()
Resultado:
utiliza el operador $size filtrar los resultados para devolver solo aquellos que coincidan con un tamaño específico.
Busca documentos donde el campo de array de categorías tenga dos elementos.
db.inventory.find({ "category": { $size: 2}}).pretty()
Resultado:
utiliza que el operador de $elemMatch coincida con resultados donde al menos un elemento cumple todos los criterios de consulta especificados en un array.
Busca documentos donde al menos un elemento en el array "daily_sales" están menos de 200 y mayor de 100.
db.promo.find({ "daily_sales": { $elemMatch: {$gt: 100, $lt: 200}}}).pretty()
Resultado:
Operador de comentarios en MongoDB
El operador de consulta de comentarios de MongoDB asocia un comentario a cualquier expresión que tome un predicado de consulta. Añadir comentarios a las consultas permite a los administradores de bases de datos rastrear e interpretar los registros de MongoDB usando los comentarios fácilmente.
$comment Operador
Busca documentos cuyo periodo están igual a 7 en la colección promocional mientras añades un comentario a la operación de búsqueda.
db.promo.find({ "period": { $eq: 7}, $comment: "Find Weeklong Promos"}).pretty()
Resultado:
Añadir comentarios permite a los usuarios identificar fácilmente comandos en los registros de MongoDB. La operación anterior se registrará de la siguiente manera.
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
Resultado:
Descubre más operadores de MongoDB
En este artículo, solo hemos arañado la superficie de los operadores de MongoDB. Podemos extiende aún más la funcionalidad general de la base de datos usando operadores de proyección yAgregadoFunciones te.
Lecturas relacionadas
- Blog de Aprendizaje Automático y Big Data de BMC
- Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales, parte de nuestra Guía de MongoDB
- BMC Guides, que ofrece una serie de artículos sobre una variedad de temas, incluyendo Apache Cassandra y Spark, AWS, Aprendizaje Automático y Visualización de Datos
- Explicación sobre el almacenamiento de datos: Data Lake vs Almacén vs Base de datos
Guía de MongoDB
- Resumen de MongoDB: Empezando con MongoDB
- Cómo instalar MongoDB en Ubuntu y Mac
- Creación de una base de datos en MongoDB
- Comandos básicos de MongoDB Shell
- MongoDB Compass: Uso de la interfaz gráfica de Mongo
- Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
- Explicación de los operadores de proyección y proyección de MongoDB
- Explicación de las funciones agregadas de MongoDB
- Ordenación de MongoDB: método y ejemplos de sort()
- Uso de operadores de Push & Pull en MongoDB
- Cómo utiliza MongoDB $unwind
- 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
- Ejemplos de consultas de geolocalización de MongoDB
- Introducción a las transacciones de MongoDB
- Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
- Mejores comandos de MongoDB te necesitas saber
- Replicación de MongoDB: Una introducción completa
- Cómo configurar un clúster de MongoDB
- Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
- MongoDB Atlas: Configuración y uso de MongoDB gestionado
- Cómo ejecutar MongoDB como contenedor Docker
- Uso, gestión y requisitos de memoria de MongoDB
- Cómo utilizar Mongodump para copias de seguridad de MongoDB
- Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
- Cómo utilizar PyMongo
- Cómo utilizar Mongoose para MongoDB y NodeJS
- Chuletas de MongoDB
- MongoDB vs Cassandra: Comparación de bases de datos NoSQL
- PostgreSQL vs MongoDB: Comparando bases de datos
- MySQL vs MongoDB: Comparando bases de datos
- Certificaciones MongoDB: Una introducción
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.