Proyección en MongoDB [Con Ejemplos]

Publicado: 2020-09-15

MongoDB es una de las bases de datos modernas más famosas para manejar y administrar big data. Es una base de datos orientada a documentos NoSQL que utiliza documentos similares a JSON para facilitar la gestión de datos.

Varias ideas de proyectos de MongoDB pueden cobrar vida fácilmente. Sin embargo, MongoDB también tiene algunos inconvenientes. De forma predeterminada, cualquier consulta de un documento específico mostrará todos los datos; este problema se resuelve con la ayuda de la proyección de MongoDB .

Tabla de contenido

¿Qué es la proyección en MongoDB?

La proyección en MongoDB limita la salida de datos a campos específicos en lugar de mostrarlos todos. Esto se hace con la ayuda del método find(). El método find() acepta un parámetro opcional que nos permite incluir o excluir ciertos campos de salida. Profundicemos en cómo usar la proyección en MongoDB .

Sintaxis del método Find()

La proyección en MongoDB se realiza con la ayuda del método find(), cuya sintaxis es:

base de datos nombre_colección .find ({}, { field_Key:1 or 0 })

En la sintaxis anterior, nombre_colección es el documento del que necesitamos recuperar los datos. Luego, hay dos parámetros en el método find(): el primero acepta una consulta y el segundo se usa para la proyección. El field_Key en la sintaxis es el nombre del campo que queremos incluir o excluir.

Necesitamos pasar un valor booleano para cada campo_Clave . Este valor define si queremos incluir el campo o excluirlo. Si ingresamos 1 en un campo, se mostrará en los resultados, y si incluimos 0, se ocultará.

La base de datos de ejemplo

Vamos a crear un documento de ejemplo en una base de datos para que podamos consultarlo a lo largo de este artículo.

db.ejemplo.studentData([

{_id: ObjectId(“59kf63795bc1d”), nombre_estudiante: “Alexander”, id_estudiante: 01, estado_estudiante: “A”, edad_estudiante: 22}

{_id: ObjectId(“59ke62794bc1d”), nombre_estudiante: “Steve”, id_estudiante: 02, estado_estudiante: “A”, edad_estudiante: 23}

{_id: ObjectId(“59kg73795bf1e”), nombre_estudiante: “Luke”, id_estudiante: 03, estado_estudiante: “A”, edad_estudiante: 21}

{_id: ObjectId(“59kb69995ah1d”), nombre_estudiante: “Bravo”, id_estudiante: 04, estado_estudiante: “B”, edad_estudiante: 25}

])

Este es nuestro documento de base de datos llamado ejemplo que usaremos como referencia en todos nuestros ejemplos.

Recuperación de datos con y sin proyección en MongoDB

1. La sintaxis para recuperar sin proyección

Recuperando todos los campos (como sin usar proyección) de estudiantes con status_estudiante: "A".

db.ejemplo.find({student_status: “A”})

Esto corresponde a Seleccionar * del ejemplo WHERE student_status = consulta "A" en SQL. La recuperación de datos sin proyección en MongoDB producirá el siguiente resultado:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_id”: 01, “student_status”: “A”, estudiante_edad: 22}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_id”: 02, “student_status”: “A”, “student_age”: 23}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_id”: 03, “student_status”: “A”, estudiante_edad: 21}

De forma predeterminada, muestra todos los campos de los datos donde student_status = "A". Para limitar los campos de salida, podemos usar la proyección en MongoDB .

2. La sintaxis para recuperar con proyección

Recuperar nombre_estudiante y estado_estudiante de todos los estudiantes.

db.ejemplo.find({}, {nombre_estudiante: 1, estado_estudiante: 1})

Esto mostrará el siguiente resultado:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_status”: “A”}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_status”: “A”}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_status”: “A”}

{“_id”: ObjectId(“59kb69995ah1d”), nombre_estudiante: “Bravo”, estado_estudiante: “B”}

El _id se muestra de forma predeterminada al usar la proyección en MongoDB a menos que lo suprimamos.

Suprimir _id mientras se usa proyección en MongoDB

Suprimiendo el _id predeterminado y mostrando student_id, student_name y student_status de todos los estudiantes.

db.ejemplo.find({}, {_id: 0, id_estudiante: 1, nombre_estudiante: 1, estado_estudiante: 1})

Esto producirá el siguiente resultado:

{“student_id”: 01, “student_name”: “Alexander”, “student_status”: “A”}

{“student_id”: 02, “student_name”: “Steve”, “student_status”: “A”}

{“student_id”: 03, “student_name”: “Luke”, “student_status”: “A”}

{“student_id”: 04, “student_name”: “Bravo”, estudiante_status: “B”}

3. Combinando inclusión y exclusión

Excluyendo _id y student_id, incluidos student_name y student_status de todos los estudiantes.

db.ejemplo.find({}, {_id: 0, id_estudiante: 0, nombre_estudiante: 1, estado_estudiante: 1})

Esto producirá el siguiente resultado:

Error: error: {

"MS esperado": NumberLong (0),

"bien" : 0,

“errmsg”: “La proyección no puede tener una mezcla de inclusión y exclusión.”,

"código": 2

}

La combinación de inclusión y exclusión al usar la proyección de MongoDB arrojará un error porque no podemos realizar ambas en la misma consulta. El campo _id es una excepción a esta regla.

Habrás notado que usamos una combinación de inclusión y exclusión en nuestro ejemplo anterior donde suprimimos _id y mostramos algunos otros campos, y funcionó bien. Debido a la excepción a la regla, excluimos _id e incluimos el resto de los campos.

4. Especificación de proyección en MongoDB por exclusión

Excluyendo _id y student_status de todos los alumnos y mostrando los demás campos.

db.ejemplo.find({}, {_id: 0, estado_del_estudiante: 0})

{“student_name”: “Alexander”, “student_id”: 01, “student_age”: 22}

{“student_name”: “Steve”, “student_id”: 02, “student_age”: 23}

{“student_name”: “Luke”, “student_id”: 03, “student_age”: 21}

{“student_name”: “Bravo”, “student_id”: 04, “student_age”: 25}

También puede usar los cuatro operadores de proyección para limitar los campos de salida, pero el método find() no los admite. Los operadores de proyección que se pueden usar son: $, $elemMatch, $slice y $meta.

Lea también: Casos de uso del mundo real de MongoDB

Conclusión

Con el uso de la proyección en MongoDB , podemos tomar el control de mostrar datos en el front-end, lo que aumenta sus casos de uso en el mundo real . MongoDB ha logrado varios hitos en los últimos años. Esto ha hecho que el alcance futuro de MongoDB sea brillante, y numerosas empresas están buscando desarrolladores de pila completa con el conocimiento de MongoDB.

Ahora es, por lo tanto, un buen momento para incluir las habilidades de MongoDB en su currículum. Pero entonces, solo administrar una base de datos no es suficiente en el mundo competitivo de hoy. Por lo tanto, sería útil si tuviera como objetivo convertirse en un desarrollador de pila completa o aprender análisis de negocios para comprender y analizar los datos que está administrando y ayudar a las empresas a funcionar bien. upGrad puede ayudarlo a comenzar.

En upGrad proporcionamos fuentes de aprendizaje detalladas junto con experiencia práctica y asistencia laboral. Hemos colaborado con múltiples institutos para brindarle lo mejor en educación y certificación. Puede elegir si desea participar en el curso de certificación de Business Analytics o optar por un curso completo de desarrollo de software PG Diploma . Lo que sea que desee seguir como carrera en su vida, lo tenemos cubierto.

Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga Programas PG Ejecutivos, Programas de Certificado Avanzado o Programas de Maestría para acelerar su carrera.

Liderar la revolución tecnológica basada en datos

Programa de Certificado Avanzado en Big Data de IIIT Bangalore