Imprimir valores de documentos usando MongoDB Shell
- Imprimir valores de documentos usando MongoDB Shell
- Imprimir los valores de documento para todos los documentos de 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 según las condiciones especificadas para todos los documentos
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()
ofind({})
para obtener todos los documentos de la colección especificada - Utilice
find({}, {"city": 1})
para recuperar la propiedadcity
con su valor para todos los documentos. - Utilice
find({}, {"city": 1, "_id:0"})
para obtener la propiedadcity
y su valor para todos los documentos, pero no muestre elObjectId
. Aquí, establecer el valor de_id
en0
(por defecto es1
) no permite imprimir elObjectId
.
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