Imprimir valores de documentos usando MongoDB Shell

Mehvish Ashiq 16 febrero 2024
  1. Imprimir valores de documentos usando MongoDB Shell
  2. Imprimir los valores de documento para todos los documentos de una colección
  3. Imprima los valores del documento solo para el primer documento
  4. Imprima los valores del documento para todos los documentos con nombres de propiedad personalizados
  5. Imprima los valores del documento según las condiciones especificadas para todos los documentos
Imprimir valores de documentos usando MongoDB Shell

Imprimir el valor del documento también es una habilidad increíble de la que podemos beneficiarnos dependiendo de las necesidades del proyecto. Este tutorial imprime los valores del documento en lugar de imprimir el documento completo usando el shell de MongoDB.

Imprimir valores de documentos usando MongoDB Shell

Imprimir los documentos utilizando el shell de Mongo es muy fácil, pero ¿cómo imprimir los valores y las propiedades en lugar de obtener el documento completo? Antes de profundizar en los detalles, creemos una colección llamada teachers que contenga los documentos JSON como se indica a continuación.

Crear colección:

> db.createCollection('teachers')

Inserte los documentos JSON en la colección teachers:

> db.teachers.insertMany(
  [
        {
            "first_name": "Mehvish",
            "last_name": "Ashiq",
            "gender": "Female",
            "grade": 18
        },
        {
            "first_name": "Tahir",
            "last_name": "Raza",
            "gender": "Male",
            "grade": 18
        },
        {
            "first_name": "Saira",
            "last_name": "Daniel",
            "gender": "Female",
            "grade": 20

        }
    ]

)

Mostrar todos los documentos de la colección teachers:

> db.teachers.find().pretty()

Producción :

{
        "_id" : ObjectId("6290440e7c524c650b7a51c0"),
        "first_name" : "Mehvish",
        "last_name" : "Ashiq",
        "gender" : "Female",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c1"),
        "first_name" : "Tahir",
        "last_name" : "Raza",
        "gender" : "Male",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c2"),
        "first_name" : "Saira",
        "last_name" : "Daniel",
        "gender" : "Female",
        "grade" : 20
}

Una vez que hayamos terminado de crear la colección y llenarla con documentos, podemos imprimir los valores del documento según los requisitos del proyecto. Algunos de los escenarios se enumeran a continuación:

  • Imprimir los valores del documento para todos los documentos en una colección
  • Imprima los valores del documento solo para el primer documento
  • Imprima los valores del documento para todos los documentos con nombres de propiedad personalizados
  • Imprima los valores del documento en función de las condiciones especificadas para todos los documentos.

Imprimir los valores de documento para todos los documentos de una colección

Código de ejemplo:

> db.teachers.find().forEach(
    function (data) {
        Object.keys(data).forEach(
            function(key) {
                print(key + ': ' + data[key])
            }
        )
        print('\n')
    }
)

Producción :

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

_id: 6290440e7c524c650b7a51c1
first_name: Tahir
last_name: Raza
gender: Male
grade: 18

_id: 6290440e7c524c650b7a51c2
first_name: Saira
last_name: Daniel
gender: Female
grade: 20

Este código de ejemplo obtiene todos los documentos JSON utilizando el método find(). Luego, iteramos sobre cada documento usando el bucle forEach() de JavaScript y pasamos cada documento a una función anónima como data.

En esta función, usamos Object.keys(data) para recuperar todas las claves (también llamadas propiedades o nombres de campo) para ese documento en particular contenido por la variable data.

Además, se utiliza otro método forEach() para iterar sobre las claves del documento (almacenadas en la variable data) y llamar a otra función anónima para imprimir todas las claves con los valores respectivos.

Imprima los valores del documento solo para el primer documento

Código de ejemplo:

> let result = db.getCollection('teachers').findOne()
> for (var key in result) {
    if (result.hasOwnProperty(key)) {
        print(key + ': ' + result[key]);
    }
}

Producción :

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

Para este fragmento de código de ejemplo, usamos el método findOne() para recuperar el primer documento solo de la colección especificada y guardarlo en el objeto resultado.

A continuación, usamos el bucle for-in de JavaScript para iterar sobre el objeto resultado y devolver una key para acceder al valor como result[key].

Antes de acceder al valor de la key, usamos el método hasOwnProperty() para verificar si el objeto (que es resultado en este caso) tiene la propiedad dada como propia.

Imprima los valores del documento para todos los documentos con nombres de propiedad personalizados

Código de ejemplo:

> db.teachers.find().forEach(
    function (document) {
        print("FirstName: " + document.first_name +"\n"+
              "LastName: " + document.last_name + "\n"+
              "Grade: " + document.grade)
        print("\n\n")
    }
)

Producción :

FirstName: Mehvish
LastName: Ashiq
Grade: 18

FirstName: Tahir
LastName: Raza
Grade: 18

FirstName: Saira
LastName: Daniel
Grade: 20

A veces, no queremos obtener los nombres de propiedad tal como están especificados en el programa, pero queremos usar los nombres de propiedad personalizados. Si es así, esta solución es para ti.

Obtenemos todos los documentos de la colección teachers utilizando el método find(). Luego, itere sobre cada documento para recuperar los valores usando claves (también llamados nombres de campos o propiedades).

Es posible que haya notado que no obtenemos la clave principal denominada _id y su valor para este ejemplo. Es porque no lo estamos especificando en la declaración print(), pero todavía está allí en la variable document.

Use el siguiente código para verificar.

Código de ejemplo:

db.teachers.find().forEach(
    function (document) {
        print(document._id)
        print("\n\n")
    }
)

Producción :

ObjectId("6290440e7c524c650b7a51c0")

ObjectId("6290440e7c524c650b7a51c1")

ObjectId("6290440e7c524c650b7a51c2")

Veamos el siguiente apartado para evitarlo en el shell de Mongo.

Imprima los valores del documento según las condiciones especificadas para todos los documentos

Código de ejemplo:

> db.teachers.find({}, {"grade": 1, "_id":0}).forEach(
    function(property) {
        print(property.grade)
})

Producción :

18
18
20

Aquí, necesitamos entender primero la función find() para entender el código de ejemplo. Podemos usar el método find() de diferentes maneras para cumplir con los requisitos; algunos formatos se enumeran a continuación:

  • Utilice find() o find({}) para obtener todos los documentos de la colección especificada
  • Utilice find({}, {"city": 1}) para recuperar la propiedad city con su valor para todos los documentos.
  • Utilice find({}, {"city": 1, "_id:0"}) para obtener la propiedad city y su valor para todos los documentos, pero no muestre el ObjectId. Aquí, establecer el valor de _id en 0 (por defecto es 1) no permite imprimir el ObjectId.

De manera similar, usamos el método find() para recuperar la propiedad grade y su valor sin mostrar el campo _id.

Sin embargo, usamos el bucle forEach() para cada registro para imprimir solo el valor de propiedad pasado a la función anónima. Podemos optimizar el código usando la función de flecha de JavaScript.

Código de ejemplo:

db.teachers.find({}, {"grade": 1, "_id":0}).forEach( property => print(property.grade))

Producción :

18
18
20
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MongoDB Print