Imprimer les valeurs du document à l'aide de MongoDB Shell

Mehvish Ashiq 16 février 2024
  1. Imprimer les valeurs du document à l’aide de MongoDB Shell
  2. Imprimer les valeurs de document pour tous les documents d’une collection
  3. Imprimer les valeurs du document pour le premier document uniquement
  4. Imprimer les valeurs de document pour tous les documents avec des noms de propriété personnalisés
  5. Imprimer les valeurs du document en fonction des conditions spécifiées pour tous les documents
Imprimer les valeurs du document à l'aide de MongoDB Shell

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() ou find({}) 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 pas ObjectId. Ici, mettre la valeur de _id à 0 (par défaut c’est 1) ne permet pas d’imprimer ObjectId.

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
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

Article connexe - MongoDB Print