Imprimer les valeurs du document à l'aide de MongoDB Shell
- Imprimer les valeurs du document à l’aide de MongoDB Shell
- Imprimer les valeurs de document pour tous les documents d’une collection
- Imprimer les valeurs du document pour le premier document uniquement
- Imprimer les valeurs de document pour tous les documents avec des noms de propriété personnalisés
- Imprimer les valeurs du document en fonction des conditions spécifiées pour tous les documents
L’impression de la valeur du document est également une compétence incroyable dont nous pouvons bénéficier en fonction des besoins du projet. Ce didacticiel imprime les valeurs du document au lieu d’imprimer le document complet à l’aide du shell MongoDB.
Imprimer les valeurs du document à l’aide de MongoDB Shell
Imprimer les documents à l’aide du shell Mongo est très simple, mais comment imprimer les valeurs et les propriétés au lieu d’obtenir le document entier ? Avant d’entrer dans les détails, créons une collection nommée teachers
contenant les documents JSON comme indiqué ci-dessous.
Créer une collection :
> db.createCollection('teachers')
Insérez les documents JSON dans la collection 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
}
]
)
Afficher tous les documents de la collection teachers
:
> db.teachers.find().pretty()
PRODUCTION:
{
"_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
}
Une fois que nous avons fini de créer la collection et de la remplir avec des documents, nous pouvons imprimer les valeurs du document en fonction des exigences du projet. Certains des scénarios sont énumérés ci-dessous :
- Imprimer les valeurs de document pour tous les documents d’une collection
- Imprimer les valeurs du document pour le premier document uniquement
- Imprimez les valeurs de document pour tous les documents avec des noms de propriété personnalisés
- Imprimer les valeurs du document en fonction des conditions spécifiées pour tous les documents
Imprimer les valeurs de document pour tous les documents d’une collection
Exemple de code :
> db.teachers.find().forEach(
function (data) {
Object.keys(data).forEach(
function(key) {
print(key + ': ' + data[key])
}
)
print('\n')
}
)
PRODUCTION:
_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
Cet exemple de code récupère tous les documents JSON à l’aide de la méthode find()
. Ensuite, nous itérons sur chaque document en utilisant la boucle forEach()
de JavaScript et passons chaque document à une fonction anonyme en tant que data
.
Dans cette fonction, nous utilisons Object.keys(data)
pour récupérer toutes les clés (également appelées propriétés ou noms de champs) pour ce document particulier contenu par la variable data
.
De plus, une autre méthode forEach()
est utilisée pour itérer sur les clés du document (stockées dans la variable data
) et appeler une autre fonction anonyme pour imprimer toutes les clés avec les valeurs respectives.
Imprimer les valeurs du document pour le premier document uniquement
Exemple de code :
> let result = db.getCollection('teachers').findOne()
> for (var key in result) {
if (result.hasOwnProperty(key)) {
print(key + ': ' + result[key]);
}
}
PRODUCTION:
_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18
Pour cet exemple d’extrait, nous utilisons la méthode findOne()
pour récupérer le premier document uniquement à partir de la collection spécifiée et l’enregistrer dans l’objet result
.
Ensuite, nous utilisons la boucle for-in
de JavaScript pour parcourir l’objet result
et retourner une key
pour accéder à la valeur comme result[key]
.
Avant d’accéder à la valeur de la key
, nous utilisons la méthode hasOwnProperty()
pour vérifier si l’objet (qui est result
dans ce cas) possède la propriété donnée comme étant la sienne.
Imprimer les valeurs de document pour tous les documents avec des noms de propriété personnalisés
Exemple de code :
> db.teachers.find().forEach(
function (document) {
print("FirstName: " + document.first_name +"\n"+
"LastName: " + document.last_name + "\n"+
"Grade: " + document.grade)
print("\n\n")
}
)
PRODUCTION:
FirstName: Mehvish
LastName: Ashiq
Grade: 18
FirstName: Tahir
LastName: Raza
Grade: 18
FirstName: Saira
LastName: Daniel
Grade: 20
Parfois, nous ne voulons pas obtenir les noms de propriété tels qu’ils sont spécifiés dans le programme, mais nous voulons utiliser les noms de propriété personnalisés. Si oui, cette solution est pour vous.
Nous obtenons tous les documents de la collection teachers
en utilisant la méthode find()
. Ensuite, parcourez chaque document pour récupérer les valeurs à l’aide de clés (également appelées noms de champs ou de propriétés).
Vous avez peut-être remarqué que nous n’obtenons pas la clé primaire nommée _id
et sa valeur pour cet exemple. C’est parce que nous ne le spécifions pas dans l’instruction print()
, mais il est toujours là dans la variable document
.
Utilisez le code suivant pour vérifier.
Exemple de code :
db.teachers.find().forEach(
function (document) {
print(document._id)
print("\n\n")
}
)
PRODUCTION:
ObjectId("6290440e7c524c650b7a51c0")
ObjectId("6290440e7c524c650b7a51c1")
ObjectId("6290440e7c524c650b7a51c2")
Voyons la section suivante pour l’éviter sur le shell Mongo.
Imprimer les valeurs du document en fonction des conditions spécifiées pour tous les documents
Exemple de code :
> db.teachers.find({}, {"grade": 1, "_id":0}).forEach(
function(property) {
print(property.grade)
})
PRODUCTION:
18
18
20
Ici, nous devons d’abord comprendre la fonction find()
pour comprendre l’exemple de code. Nous pouvons utiliser la méthode find()
de différentes manières pour répondre aux exigences ; certains formats sont listés ci-dessous :
- Utilisez
find()
oufind({})
pour obtenir tous les documents de la collection spécifiée - Utilisez
find({}, {"city": 1})
pour récupérer la propriétécity
avec sa valeur pour tous les documents. - Utilisez
find({}, {"city": 1, "_id:0"})
pour obtenir la propriétécity
et sa valeur pour tous les documents mais n’affichez pasObjectId
. Ici, mettre la valeur de_id
à0
(par défaut c’est1
) ne permet pas d’imprimerObjectId
.
De même, nous utilisons la méthode find()
pour récupérer la propriété grade
et sa valeur sans afficher le champ _id
.
Cependant, nous utilisons la boucle forEach()
pour chaque enregistrement afin d’imprimer uniquement la valeur de la propriété transmise à la fonction anonyme. Nous pouvons optimiser le code en utilisant la fonction flèche de JavaScript.
Exemple de code :
db.teachers.find({}, {"grade": 1, "_id":0}).forEach( property => print(property.grade))
PRODUCTION:
18
18
20