Mettre à jour des tableaux MongoDB

MongoDBMongoDBBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à mettre à jour les tableaux MongoDB en utilisant diverses techniques, notamment en poussant de nouveaux éléments, en tirant des éléments de tableau, en mettant à jour les éléments de tableau, en ajoutant des éléments à des ensembles de tableau et en supprimant les doublons. Le laboratoire couvre des exemples pratiques et des instructions étape par étape pour vous aider à maîtriser la gestion des tableaux dans vos bases de données MongoDB. Vous allez explorer la manière de modifier dynamiquement les données des documents et de maintenir l'intégrité de vos structures basées sur des tableaux.

Le laboratoire commence par démontrer comment ajouter de nouveaux éléments à des tableaux en utilisant l'opérateur $push. Il couvre ensuite l'opérateur $pull, qui vous permet de supprimer des éléments spécifiques de tableaux. En outre, vous allez apprendre à mettre à jour des éléments de tableau individuels, à ajouter des éléments à des ensembles de tableau et à supprimer les doublons de tableaux. Ces techniques vous donneront les compétences nécessaires pour travailler efficacement avec des tableaux et des documents imbriqués dans vos applications MongoDB.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/DataTypesGroup(["Data Types"]) mongodb(("MongoDB")) -.-> mongodb/ArrayandEmbeddedDocumentsGroup(["Array and Embedded Documents"]) mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/update_document("Update Document") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/DataTypesGroup -.-> mongodb/work_with_array_data_types("Work with Array Data Types") mongodb/DataTypesGroup -.-> mongodb/manage_array_elements("Manage Array Elements") mongodb/ArrayandEmbeddedDocumentsGroup -.-> mongodb/query_embedded_documents("Query Embedded Documents") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/update_document -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} mongodb/find_documents -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} mongodb/work_with_array_data_types -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} mongodb/manage_array_elements -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} mongodb/query_embedded_documents -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} mongodb/aggregate_group_totals -.-> lab-422095{{"Mettre à jour des tableaux MongoDB"}} end

Ajouter de nouveaux éléments

Dans cette étape, vous allez apprendre à ajouter de nouveaux éléments à des tableaux dans MongoDB en utilisant l'opérateur $push. Les tableaux dans MongoDB sont puissants et flexibles, vous permettant de modifier dynamiquement les données de votre document.

Tout d'abord, lançons le shell MongoDB et créons une base de données pour notre laboratoire :

mongosh
use arraylab

Maintenant, créons une collection appelée students avec un document initial qui a un tableau de cours :

db.students.insertOne({
    name: "Alice Johnson",
    courses: ["Mathematics", "Computer Science"]
})

Pour ajouter un nouveau cours à la liste de cours d'Alice, nous utiliserons l'opérateur $push :

db.students.updateOne(
    { name: "Alice Johnson" },
    { $push: { courses: "Data Structures" } }
)

Vérifions la mise à jour en recherchant le document d'Alice :

db.students.find({ name: "Alice Johnson" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Mathematics', 'Computer Science', 'Data Structures' ]
  }
]

L'opérateur $push vous permet d'ajouter des éléments à un tableau. Dans cet exemple, nous avons ajouté "Data Structures" à la liste de cours d'Alice.

Vous pouvez également pousser plusieurs éléments d'un coup en utilisant $push avec le modificateur $each :

db.students.updateOne(
    { name: "Alice Johnson" },
    { $push: { courses: { $each: ["Physics", "Chemistry"] } } }
)

Cela ajoute à la fois "Physics" et "Chemistry" au tableau de cours d'Alice.

Extraire des éléments de tableau

Dans cette étape, vous allez apprendre à supprimer des éléments de tableaux dans MongoDB en utilisant l'opérateur $pull. En vous appuyant sur l'étape précédente, nous allons continuer à travailler avec notre collection students dans la base de données arraylab.

Tout d'abord, assurez-vous d'être dans le shell MongoDB et d'utiliser la base de données correcte :

mongosh
use arraylab

Vérifions notre document d'étudiant existant :

db.students.find({ name: "Alice Johnson" })

Pour supprimer un élément spécifique d'un tableau, nous utiliserons l'opérateur $pull. Supprimons le cours de "Physique" des cours d'Alice :

db.students.updateOne(
    { name: "Alice Johnson" },
    { $pull: { courses: "Physics" } }
)

Maintenant, vérifions le document mis à jour :

db.students.find({ name: "Alice Johnson" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Mathematics', 'Computer Science', 'Data Structures', 'Chemistry' ]
  }
]

Vous pouvez également supprimer plusieurs éléments spécifiques en utilisant $pull avec un tableau de valeurs :

db.students.updateOne(
    { name: "Alice Johnson" },
    { $pullAll: { courses: ["Mathematics", "Chemistry"] } }
)

L'opérateur $pullAll supprime toutes les valeurs spécifiées du tableau en une seule opération.

Vérifions l'état final des cours d'Alice :

db.students.find({ name: "Alice Johnson" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Alice Johnson',
    courses: [ 'Computer Science', 'Data Structures' ]
  }
]

Mettre à jour des éléments de tableau

Dans cette étape, vous allez apprendre à mettre à jour des éléments spécifiques à l'intérieur d'un tableau dans MongoDB en utilisant des opérateurs de positionnement et de filtrage de tableau.

Tout d'abord, assurez-vous d'être dans le shell MongoDB et d'utiliser la base de données correcte :

mongosh
use arraylab

Créons un document plus complexe avec un tableau de cours d'étudiants :

db.students.insertOne({
    name: "Bob Smith",
    courses: [
        { name: "Mathematics", grade: "B" },
        { name: "Computer Science", grade: "A" },
        { name: "Physics", grade: "C" }
    ]
})

Pour mettre à jour un élément spécifique dans un tableau, nous utiliserons l'opérateur de positionnement $. Mettons à jour la note pour l'informatique :

db.students.updateOne(
    { name: "Bob Smith", "courses.name": "Computer Science" },
    { $set: { "courses.$.grade": "A+" } }
)

Vérifions la mise à jour :

db.students.find({ name: "Bob Smith" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    courses: [
      { name: 'Mathematics', grade: 'B' },
      { name: 'Computer Science', grade: 'A+' },
      { name: 'Physics', grade: 'C' }
    ]
  }
]

Nous pouvons également utiliser l'opérateur $[] pour mettre à jour tous les éléments d'un tableau. Ajoutons un semestre à tous les cours :

db.students.updateOne(
    { name: "Bob Smith" },
    { $set: { "courses.$[].semester": "Fall 2023" } }
)

Vérifions le document final :

db.students.find({ name: "Bob Smith" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Bob Smith',
    courses: [
      { name: 'Mathematics', grade: 'B', semester: 'Fall 2023' },
      { name: 'Computer Science', grade: 'A+', semester: 'Fall 2023' },
      { name: 'Physics', grade: 'C', semester: 'Fall 2023' }
    ]
  }
]

Ajouter à des ensembles de tableau

Dans cette étape, vous allez apprendre à ajouter des éléments uniques à un tableau en utilisant l'opérateur $addToSet dans MongoDB, qui empêche les entrées dupliquées.

Tout d'abord, assurez-vous d'être dans le shell MongoDB et d'utiliser la base de données correcte :

mongosh
use arraylab

Créons un nouveau document avec un tableau de compétences d'un étudiant :

db.students.insertOne({
    name: "Emma Wilson",
    skills: ["Python", "JavaScript"]
})

L'opérateur $addToSet ajoute un élément à un tableau seulement s'il n'existe pas déjà :

db.students.updateOne(
    { name: "Emma Wilson" },
    { $addToSet: { skills: "Python" } }
)

Vérifions le document :

db.students.find({ name: "Emma Wilson" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Emma Wilson',
    skills: ['Python', 'JavaScript']
  }
]

Remarquez que "Python" n'a pas été ajouté à nouveau car il existait déjà.

Vous pouvez également ajouter plusieurs éléments uniques d'un coup en utilisant $addToSet avec $each :

db.students.updateOne(
    { name: "Emma Wilson" },
    { $addToSet: {
        skills: {
            $each: ["React", "Node.js", "Python", "TypeScript"]
        }
    } }
)

Vérifions le document final :

db.students.find({ name: "Emma Wilson" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Emma Wilson',
    skills: ['Python', 'JavaScript', 'React', 'Node.js', 'TypeScript']
  }
]

Notez comment "Python" n'a pas été dupliqué, tandis que les nouvelles compétences ont été ajoutées.

Supprimer les doublons

Dans cette étape, vous allez apprendre à supprimer les éléments dupliqués d'un tableau dans MongoDB en utilisant des opérations d'agrégation et de mise à jour.

Tout d'abord, assurez-vous d'être dans le shell MongoDB et d'utiliser la base de données correcte :

mongosh
use arraylab

Créons un document avec des compétences dupliquées :

db.students.insertOne({
    name: "Michael Chen",
    skills: ["Python", "JavaScript", "Python", "React", "JavaScript", "Node.js"]
})

Pour supprimer les doublons, nous utiliserons l'opérateur $addToSet, qui élimine automatiquement les doublons :

db.students.updateOne(
    { name: "Michael Chen" },
    { $set: { skills: { $setUnique: "$skills" } } }
)

Alternativement, nous pouvons utiliser un pipeline d'agrégation pour supprimer les doublons :

db.students.aggregate([
    { $match: { name: "Michael Chen" } },
    { $project: {
        name: 1,
        skills: { $setUnique: "$skills" }
    } },
    { $merge: { into: "students", on: "name", whenMatched: "replace" } }
])

Vérifions le document :

db.students.find({ name: "Michael Chen" })

Sortie de l'exemple :

[
  {
    _id: ObjectId("..."),
    name: 'Michael Chen',
    skills: ['Python', 'JavaScript', 'React', 'Node.js']
  }
]

Nous pouvons également démontrer la suppression des doublons tout en conservant l'ordre d'apparition initial :

db.students.updateOne(
    { name: "Michael Chen" },
    { $set: {
        skills: Array.from(new Set(db.students.findOne({ name: "Michael Chen" }).skills))
    } }
)

Faisons un dernier contrôle :

db.students.find({ name: "Michael Chen" })

Récapitulatif

Dans ce laboratoire, vous avez appris à mettre à jour des tableaux MongoDB à l'aide de divers opérateurs. Tout d'abord, vous avez appris à ajouter de nouveaux éléments à des tableaux en utilisant l'opérateur $push, y compris le fait de pousser plusieurs éléments d'un coup. Ensuite, vous avez exploré la manière de supprimer des éléments spécifiques de tableaux en utilisant l'opérateur $pull. De plus, vous avez découvert comment mettre à jour des éléments individuels à l'intérieur d'un tableau et comment ajouter des éléments à un ensemble de tableau pour éviter les doublons. Ces techniques fournissent une base solide pour la gestion dynamique des données de tableau dans vos applications MongoDB.