MongoDB : Comment ajouter un nouveau champ dans une collection
Vous pouvez utiliser les méthodes suivantes pour ajouter un nouveau champ à chaque document d’une collection dans MongoDB :
Méthode 1 : ajouter un nouveau champ sans valeurs
db.collection.updateMany({}, {$set:{"new_field": null}})
Méthode 2 : ajouter un nouveau champ avec une valeur spécifique
db.collection.updateMany({}, {$set:{"new_field": 10}})
Méthode 3 : ajouter un nouveau champ en utilisant les valeurs des champs existants
db.collection.updateMany( {}, [ {"$set": {"name": { "$concat": ["$field1", " ", "$field2"]}}} ] )
Les exemples suivants montrent comment utiliser chaque méthode avec une équipe de collecte avec les documents suivants :
db.teams.insertOne({team: "Mavs", position: "Guard", points: 31}) db.teams.insertOne({team: "Spurs", position: "Guard", points: 22}) db.teams.insertOne({team: "Rockets", position: "Center", points: 19}) db.teams.insertOne({team: "Warriors", position: "Forward", points: 26}) db.teams.insertOne({team: "Cavs", position: "Guard", points: 33})
Exemple 1 : ajouter un nouveau champ sans valeurs
Nous pouvons utiliser le code suivant pour ajouter un nouveau champ appelé « rebonds » avec une valeur nulle à chaque document existant de la collection :
db.teams.updateMany({}, {$set:{"rebounds": null}})
Nous pouvons utiliser la requête suivante pour afficher les premiers documents mis à jour :
db.teams.find().limit(3)
Cette requête renvoie les documents suivants :
{ _id: ObjectId("6189325896cd2ba58ce928e5"), team: 'Mavs', position: 'Guard', points: 31, rebounds: null } { _id: ObjectId("6189325896cd2ba58ce928e6"), team: 'Spurs', position: 'Guard', points: 22, rebounds: null } { _id: ObjectId("6189325896cd2ba58ce928e7"), team: 'Rockets', position: 'Center', points: 19, rebounds: null }
Notez que chaque document possède désormais un champ appelé « rebonds » avec une valeur nulle.
Exemple 2 : ajouter un nouveau champ avec une valeur spécifique
Nous pouvons utiliser le code suivant pour ajouter un nouveau champ appelé « rebonds » avec une valeur de 10 à chaque document existant de la collection :
db.teams.updateMany({}, {$set:{"rebounds": 10}})
Nous pouvons utiliser la requête suivante pour afficher les premiers documents mis à jour :
db.teams.find().limit(3)
Cette requête renvoie les documents suivants :
{ _id: ObjectId("6189325896cd2ba58ce928e5"), team: 'Mavs', position: 'Guard', points: 31, rebounds: 10 } { _id: ObjectId("6189325896cd2ba58ce928e6"), team: 'Spurs', position: 'Guard', points: 22, rebounds: 10 } { _id: ObjectId("6189325896cd2ba58ce928e7"), team: 'Rockets', position: 'Center', points: 19, rebounds: 10 }
Notez que chaque document possède désormais un champ appelé « rebonds » avec une valeur de 10.
Exemple 3 : Ajouter un nouveau champ à l’aide des valeurs des champs existants
Nous pouvons utiliser le code suivant pour ajouter un champ appelé « nom » dont la valeur est une concaténation des champs existants « équipe » et « position » :
db.teams.updateMany( {}, [ {"$set": {"name": { "$concat": ["$team", " ", "$position"]}}} ] )
Nous pouvons utiliser la requête suivante pour afficher les premiers documents mis à jour :
db.teams.find().limit(3)
Cette requête renvoie les documents suivants :
{ _id: ObjectId("618934cb96cd2ba58ce928ea"), team: 'Mavs', position: 'Guard', points: 31, name: 'Mavs Guard' } { _id: ObjectId("618934cb96cd2ba58ce928eb"), team: 'Spurs', position: 'Guard', points: 22, name: 'Spurs Guard' } { _id: ObjectId("618934cb96cd2ba58ce928ec"), team: 'Rockets', position: 'Center', points: 19, name: 'Rockets Center' }
Notez que chaque document possède désormais un champ appelé « nom » dont la valeur est une concaténation des champs « équipe » et « poste ».
Remarque : Vous pouvez trouver la documentation complète de la fonction updateMany() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans MongoDB :
MongoDB : Comment renommer les champs
MongoDB : Comment supprimer des champs
MongoDB : Comment vérifier si le champ contient une chaîne
MongoDB : Comment interroger avec une plage de dates
MongoDB : Comment interroger avec une expression régulière « Like »