L’opérateur $push de MongoDB permet d’ajouter des éléments à un tableau dans un document. Cet opérateur est essentiel pour manipuler les données de manière dynamique, surtout lorsque vous travaillez avec des collections contenant des tableaux. Par exemple, si vous gérez une application de gestion d’événements, vous pourriez vouloir ajouter des participants à un événement sans remplacer les données existantes. Cet article vous guide à travers l’utilisation de $push, avec des exemples pratiques et des conseils pour éviter les pièges courants.
Qu’est-ce que l’opérateur $push ? #
L’opérateur $push est utilisé dans les mises à jour de documents pour ajouter un ou plusieurs éléments à un tableau. Il ne remplace pas le tableau existant, mais ajoute simplement la nouvelle valeur à la fin. Voici un exemple de syntaxe :
db.collection.update(
{ _id: 1 },
{ $push: { arrayField: newValue } }
)
Syntaxe et options
arrayField: le champ du document qui contient le tableau.newValue: la valeur que vous souhaitez ajouter au tableau.
Vous pouvez également utiliser $each pour ajouter plusieurs valeurs en une seule opération :
À lire RCU : Guide Complet Read-Copy-Update Linux
db.collection.update(
{ _id: 1 },
{ $push: { arrayField: { $each: [value1, value2] } } }
)
Exemples pratiques #
Exemple 1 : Ajouter un seul élément
Imaginons une collection d’utilisateurs où chaque utilisateur a un tableau de hobbies. Pour ajouter “photographie” au hobby d’un utilisateur spécifique :
db.users.update(
{ _id: ObjectId("60c72b2f9b1d4a3d5c8e4e8f") },
{ $push: { hobbies: "photographie" } }
)
Après cette opération, si l’utilisateur avait déjà les hobbies “lecture” et “voyage”, son document ressemblera à ceci :
{
"_id": ObjectId("60c72b2f9b1d4a3d5c8e4e8f"),
"hobbies": ["lecture", "voyage", "photographie"]
}
Exemple 2 : Ajouter plusieurs éléments
Pour ajouter plusieurs hobbies en une seule opération :
db.users.update(
{ _id: ObjectId("60c72b2f9b1d4a3d5c8e4e8f") },
{ $push: { hobbies: { $each: ["natation", "musique"] } } }
)
Le tableau hobbies contiendra maintenant quatre éléments :
À lire Skel Framework : Guide Développement Web 2026
{
"_id": ObjectId("60c72b2f9b1d4a3d5c8e4e8f"),
"hobbies": ["lecture", "voyage", "photographie", "natation", "musique"]
}
Pièges à éviter #
Un des pièges courants lors de l’utilisation de $push est d’oublier que cet opérateur ne supprime pas les doublons. Si vous essayez d’ajouter une valeur déjà présente dans le tableau, elle sera ajoutée à nouveau. Pour éviter cela, envisagez d’utiliser $addToSet, qui ajoute une valeur uniquement si elle n’est pas déjà présente dans le tableau.
Comparaison entre $push et $addToSet
| Opérateur | Fonctionnalité |
|---|---|
$push |
Ajoute un élément, même s’il existe déjà |
$addToSet |
Ajoute un élément seulement s’il n’est pas présent |
Utilisation avancée de $push #
L’opérateur $push peut également être combiné avec d’autres opérateurs pour des mises à jour plus complexes. Par exemple, vous pouvez mettre à jour plusieurs champs en même temps ou utiliser des conditions pour déterminer quand pousser une valeur.
Exemple avancé
Si vous souhaitez ajouter un hobby uniquement si l’utilisateur a moins de trois hobbies :
db.users.update(
{ _id: ObjectId("60c72b2f9b1d4a3d5c8e4e8f"), $expr: { $lt: [{ $size: "$hobbies" }, 3] } },
{ $push: { hobbies: "danse" } }
)
Cette requête ne poussera “danse” que si l’utilisateur a moins de trois hobbies.
À lire ADDR : Guide Programmation 2026
Actions immédiates #
Pour tester l’opérateur $push, connectez-vous à votre instance MongoDB et exécutez les exemples fournis dans cet article. Créez une collection simple avec quelques documents contenant des tableaux pour voir comment les données changent avec chaque commande.
FAQ #
Qu’est-ce que l’opérateur $push en MongoDB ?
L’opérateur $push permet d’ajouter une valeur à la fin d’un tableau dans un document sans remplacer les données existantes.
Comment utiliser $push pour ajouter plusieurs valeurs ?
Utilisez la syntaxe avec $each, par exemple : { $push: { arrayField: { $each: [value1, value2] } } }.
Quelle est la différence entre $push et $addToSet ?
$push ajoute toujours la valeur au tableau, tandis que $addToSet n’ajoute la valeur que si elle n’est pas déjà présente.
À lire Blob Tree : Guide Structure Données 2026
Puis-je utiliser $push avec des conditions ?
Oui, en utilisant l’opérateur $expr, vous pouvez conditionner l’ajout d’une valeur au tableau.
Quels sont les pièges courants lors de l’utilisation de $push ?
Un piège courant est d’oublier que cela peut entraîner des doublons dans le tableau. Utilisez plutôt $addToSet si nécessaire.
Comment puis-je tester mes commandes MongoDB ?
Connectez-vous à votre instance MongoDB via le shell ou Compass et exécutez vos requêtes directement sur vos collections existantes ou créez-en de nouvelles pour expérimenter.