Consulta de filtro MongoDB

La agregación de filtros MongoDB se introdujo en la versión 3.2. Se utiliza para seleccionar un subconjunto de una matriz y proporcionar el resultado según los criterios. El operador de filtro devuelve una matriz de entradas que coinciden con los criterios especificados en el orden en que se encontraron. Cuando usamos el operador de filtro en MongoDB, debemos proporcionar argumentos input as y cond as. Input y cond son parámetros obligatorios, pero son opcionales. Necesitamos usar el signo $ antes de la palabra clave de filtro cuando usamos el operador de filtro en MongoDB.

Contenidos

¿Sintaxis de consulta de filtro MongoDB en Ubuntu 20.04?

El operador $filter devuelve una matriz que contiene exactamente esos elementos en el orden original que coinciden con la condición. A continuación se menciona la sintaxis de $filtro: { $filtro: { entrada: como: condición: } }

  • filtro: el operador $filtro se usa para proporcionar un resultado que cumple con ciertos criterios. En MongoDB, usamos el operador de filtro para filtrar los resultados según el criterio que especificamos en la consulta.
  • Entrada: esta es una expresión de resolución de matriz. Logramos pasar el campo de matriz como un parámetro de entrada para filtrar los registros. Antes de usar el parámetro de campo de entrada en el operador de filtro, necesitamos usar el signo $.
  • as: este es un argumento de operador de filtro opcional. Este es el nombre del campo utilizado como elemento en la matriz de entrada. Este parámetro es de tipo cadena en el operador de filtro. Con la palabra clave «as», esta expresión accede a cada elemento en una matriz de entrada.
  • cond: esta opción determina dónde insertar el valor de la matriz generada. Este parámetro es del tipo expresión en el operador de filtro. Los valores de la colección especificada se han filtrado mediante expresiones. Podemos usar numerosos operadores condicionales para filtrar datos de elementos de matriz.

Así es como funciona la consulta de filtro en MongoDB en Ubuntu 20.04:

Se usa un filtro $ del operador MongoDB para filtrar documentos de una matriz en función de una condición que definimos en nuestra consulta. Devuelve un subconjunto de una matriz en función de la condición especificada. Solo se devuelven las entradas de matriz que cumplen los requisitos. Los elementos se vuelven a montar en el mismo orden que antes. Veamos algunos ejemplos para que puedas entender mejor de lo que estamos hablando. En el curso posterior del artículo, nos gustaría pedirle que pruebe los ejemplos en el shell mongo. Comenzaremos creando una colección de base de datos que se usará a lo largo del artículo.

Aquí hemos definido una colección de la base de datos como «candidatos» utilizando el shell de MongoDB. Para esta colección hemos definido campos ID, Nombre y Etiquetas. Insertamos siete documentos a la vez usando la consulta insertMany.

La colección Candidates invoca la función de búsqueda como en la consulta anterior. Luego el documento grabado muestra el campo y sus valores correspondientes. Tenga en cuenta que en el campo «marcas», la matriz se define con algunos valores aleatorios.

Ejemplo 1: Uso del operador $filter en MongoDB en Ubuntu 20.04:

El operador $filter se usa para filtrar los miembros de la matriz en el campo de marcas de la colección especificada en el siguiente ejemplo:

Utilizamos la consulta agregada para recopilar «candidatos». En esta consulta tenemos el operador $match que se usa para filtrar el documento por ID. Asignamos un operador $in al campo ID. El operador $in encuentra documentos donde el valor de id es igual a cualquier valor en la matriz proporcionada. Luego, al operador $filter se le pasa el argumento de entrada y se establece su valor «$marks». También utiliza el parámetro «as», que devuelve el nombre de campo «marcas». Luego especificamos el parámetro cond, que usa el operador mayor que para el campo $$marks. Siguiendo la consulta anterior, el resultado que obtuvimos se muestra en la figura con los nuevos nombres de campo resaltados.

Ejemplo 2: Uso del operador $filter en una matriz vacía en MongoDB en Ubuntu 20.04:

Si uno de nuestros documentos de colección tiene una matriz vacía, el operador de filtro devolverá un conjunto de matrices vacío, como se ve aquí:

Dentro de $match, especificamos la ID con el operador $in, que devuelve la ID «7» de la colección, ya que especificamos «7» en una matriz. Luego, la consulta $filter proporcionó el campo de colección «marcas», que devolvió una matriz vacía porque no había ningún valor almacenado en el campo «marcas» de ID «7». El resultado del operador de filtro aquí tiene un conjunto vacío del documento.

Ejemplo 3: uso del operador $filter para el tipo incorrecto en MongoDB en Ubuntu 20.04:

Si intentamos aplicar el filtro $ a un campo que no tiene una matriz, obtendremos un error. La siguiente es la demostración de esta afirmación.

Le dimos al campo «Nombre» del documento cuyo ID es «5» dentro del operador $filtro. En el parámetro cond de $filter, tenemos el operador $eq que toma el campo $name y lo compara con el valor de cadena definido en él. Cuando ejecutamos la consulta anterior, el mensaje de error muestra que el tipo debe ser una matriz en el operador $filter, como se muestra en la figura.

Ejemplo 4: Uso del operador $filter con la variable $this en MongoDB en Ubuntu 20.04:

En los casos anteriores, usamos el parámetro «as» para dar un nombre a la variable. El parámetro as es opcional. Si dejamos este campo vacío, el nombre de la variable será «esto» por defecto.

Aquí especificamos la matriz en el operador $in que selecciona los campos de ID de los documentos de la colección especificada dentro de $match. Entonces $filter tiene los dos parámetros input y cond. El parámetro cond tiene el operador mayor que, que recupera las marcas mayores de 65. No los usamos como parámetros, sino que usamos el nombre de campo $$this. Por lo tanto, usar $$this para hacer referencia al campo nos da los mismos resultados que usar «como». La salida se cumple con la condición de $coincidencia y la condición de $filtro que se muestran en la imagen.

Conclusión:

Esta es una guía de filtros de MongoDB. En este artículo, analizamos la definición, la sintaxis y cómo funcionan los filtros en MongoDB. También se proporcionan ejemplos e implementación de código. Los elementos del campo de matriz se filtran mediante el operador de filtro MongoDB. Para obtener datos de los elementos de la matriz, usamos varias condiciones como $gt, $lt, $gte y $alte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.