Proyección de MongoDB

Proyección de MongoDB
La función de proyección de MongoDB nos permite extraer solo los datos necesarios de un documento en lugar de la recopilación completa de datos. La proyección utiliza el método find () donde los campos se especifican para ser devueltos y agregados explícitamente con un valor de "1" o "0". Cuando un parámetro de proyección tiene un valor de 1, mostrará los documentos basados ​​en la búsqueda. Y para desaparecer cualquier campo, el parámetro de proyección ingresa el valor "0". La proyección es un factor importante para identificar datos específicos del usuario dentro de una recopilación de datos dada.

¿Cómo se utiliza la proyección para mostrar los datos requeridos en MongoDB??

La proyección MongoDB se basa en el método Find () actual. Por lo tanto, podemos especificar cualquier consulta de proyección que requiera cambios significativos en el método Find () actual. La forma en que la proyección se usa en MongoDB es así: "Find (, " Field_name ":" Value ")". La sintaxis de proyección en MongoDB es la misma que el método find () pero agregamos un conjunto de argumentos en el método find (). Este conjunto de argumentos notifica la instancia de MongoDB que campo de datos devolver. Hemos utilizado la colección "Cake" donde se implementa la proyección MongoDB. Pero para esto, tenemos que agregar documentos a esa colección. Hemos utilizado el método InsertMany () del MongoDB para la inserción del documento. La consulta de insertar los documentos en la colección "Cake" es la siguiente:

db.Pastel.insertmany ([

"_id": 0,
"Nombre": "Cake de manzana",
"Calorías": 90.06,
"libras": 2,
"Precio": 540,
"Estado": "disponible",
"Topping": [JellyPrice: 50, SprinklePrice: 90, FrostedPrice: 90]
,

"_id": 1,
"Nombre": "Pastel de chocolate",
"Calorías": 150.00,
"Pounds": 1,
"Precio": 600,
"Estado": "disponible",
"Topping": [JellyPrice: 50, SprinklePrice: 90, FrostedPrice: 90]
,

"_id": 2,
"Nombre": "Cake de hielo",
"Calorías": 102.56,
"libras": 3,
"Precio": 640,
"Estado": "No disponible",
"Topping": [JellyPrice: 50, SprinklePrice: 90, FrostedPrice: 90]
,

"_id": 3,
"Nombre": "Pastel de café",
"Calorías": 180.41,
"libras": 2,
"Precio": 720,
"Estado": "disponible",
"Topping": [JellyPrice: 50, SprinklePrice: 90, FrostedPrice: 90]

])

Aquí, hemos insertado con éxito el documento que se muestra en la imagen para usar la técnica de proyección.

Ejemplo # 1: Proyección MongoDB para el campo especificado.

Aquí, solo hemos recuperado el campo único al pasar el parámetro del proyecto al método find (). Tenemos la siguiente consulta donde el método find () toma los criterios de selección vacía y el parámetro de proyección. El parámetro de proyección ingresa el campo "Nombre" que se asigna con el valor numérico "1" para mostrar solo ese campo como salida. El _id se establece con el valor "0" porque el método find () siempre devuelve el campo _id en la salida.

db.Pastel.Find (, nombre: 1, _id: 0)

Todos los documentos se muestran a continuación pero con un solo "nombre" de campo junto con su valor correspondiente porque la proyección se aplica a ese campo.

Ejemplo # 2: Proyección MongoDB para múltiples campos.

Ahora, estamos especificando los múltiples campos al parámetro de proyección del método find () para mostrar los datos solo para aquellos campos de los documentos. Aquí, tenemos una consulta de proyección que se establece con el campo "Nombre" y "calorías". Como se les asigna a estos campos el valor "1" que indica que los datos de solo estos campos se recuperan al ejecutar la consulta de proyección.

db.Pastel.find (, "_id": 0, "nombre": 1, "calorías": 1)

Por lo tanto, hemos obtenido con éxito los datos de solo aquellos campos que se establecen como parámetro de proyección.

Ejemplo # 3: Proyección MongoDB para la condición especificada.

Hemos proporcionado la declaración de proyección en el ejemplo antes mencionado sin los criterios de selección. Ahora, estamos utilizando la declaración de proyección junto con la condición. En la consulta de proyección a continuación, hemos empleado el método find () donde primero hemos establecido los criterios de selección de que el "estado" de campo debe ser igual al valor "disponible". Luego, ingresamos los campos "libras" y "precio" como el parámetro de proyección con el valor "1". Estos campos solo mostraron los datos de los documentos que satisfacían la condición "Estado:" Disponible ".

db.Pastel.encontrar(
Estado: "disponible",
"libras": 1, "precio": 1
)

Tenemos solo tres documentos cuyo estado está "disponible" que se muestra en la salida con los campos establecidos como proyección.

Ejemplo # 4: Proyección MongoDB para el campo especificado, excepto para los campos excluidos.

En esta consulta de proyección, hemos marcado los campos con el valor "0" para excluirlos del documento devuelto. Hemos implementado el método find () donde se proporcionan la expresión "Estado: disponible" y el conjunto de argumentos de proyección. El parámetro de proyección ha proporcionado a los campos "estado" y "precio" con el valor "0". El valor "0" indica que estos campos no aparecerán cuando se devuelva el documento de los criterios dados.

db.Pastel.find (status: "disponible", estado: 0, precio: 0)

Aquellos campos cuyo estado está "disponible" en los documentos se muestran en la imagen, excepto el estado y el precio del campo excluidos.

Ejemplo # 5: Operador de proyección de MongoDB "$ Slice".

La consulta de proyección optimiza la búsqueda y reduce el flujo de trabajo cuando se utilizan sus operadores. Tenemos varios operadores de consultas de proyección de las cuales hemos usado el operador $ Slice en este ejemplo. El operador $ Slice limita el número de documentos devueltos como una salida de la consulta de proyección. Aquí tenemos una consulta de proyección del operador $ Slice. Hemos invocado el método find () que se define con el parámetro vacío primero donde se establece la condición. A continuación, hemos establecido el método find () con el parámetro de proyección. El parámetro de proyección se especifica con la declaración "Libras: $ Slice: 3". El campo "libras" utiliza el operador $ slice que se establece con el valor "3" para limitar los documentos devueltos en la salida.

db.Pastel.Find (, libras: $ slice: 3)

La siguiente imagen mostró solo tres documentos en la salida porque el operador $ Slice de la instrucción de proyección lo limita por un valor dado.

Ejemplo # 6: Operador de proyección de MongoDB "$ Elematch".

Ahora, hemos utilizado otro operador de proyección "$ Elematch". El operador $ elemmatch proyecta el primer valor igualado de una matriz. Las expresiones de consulta de texto $ no son compatibles con $ Elemmatch del operador de proyección. Además, se requiere la condición explícita para el operador de proyección $ elemmatch. Hemos establecido una consulta de proyección donde los criterios de selección se asignan primero al método find () y se implementa la proyección. Para el parámetro de proyección, hemos proporcionado el campo "topping". El campo "Topping" tiene el operador $ Elematch donde se asigna la condición "SprinklePrice": 90 para que coincida con los elementos de la matriz.

db.Pastel.Find ("Name": "Ice Cake", Topping: $ ElemMatch: "SprinklePrice": 90)

Estos son los documentos que hemos recuperado en la salida después del operador $ Elematch de la consulta de proyección.

Conclusión

La guía exploró la funcionalidad de la proyección MongoDB. La proyección MongoDB se refiere a recopilar solo los datos relevantes en lugar del conjunto de datos completo de un documento. Hemos aprendido a usar la consulta de proyección para adquirir los datos necesarios de la colección dada. Hemos ejecutado varias consultas de proyección para incluir y excluir los campos específicos utilizando los valores "1" y "0". Además, también hemos utilizado los operadores de proyección "$ slice" y "$ elematch" en la consulta de proyección.