MongoDB : Comment insérer s’il n’existe pas
Vous pouvez utiliser la syntaxe suivante pour insérer un document dans une collection dans MongoDB uniquement s’il n’existe pas déjà :
db.teams.update( { team : 'Hornets' }, { $setOnInsert: {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true} )
Ce code particulier vérifie si le champ « équipe » a la valeur « Hornets ». Si cette valeur existe, alors rien ne se passera.
Cependant, si cette valeur n’existe pas alors il insérera un document avec des valeurs spécifiques pour les champs « équipe », « points » et « rebonds ».
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : Insérer s’il n’existe pas dans MongoDB
Supposons que nous ayons une collection appelée équipes avec les documents suivants :
db.teams.insertOne({team: "Mavs", points: 30, rebounds: 8}) db.teams.insertOne({team: "Spurs", points: 35, rebounds: 12}) db.teams.insertOne({team: "Rockets", points: 20, rebounds: 7}) db.teams.insertOne({team: "Warriors", points: 25, rebounds: 5}) db.teams.insertOne({team: "Cavs", points: 23, rebounds: 9})
Supposons que nous utilisions le code suivant pour tenter d’insérer un document pour l’équipe « Mavs » :
db.teams.update( { team : 'Mavs' }, { $setOnInsert: {team: 'Mavs', points: '58', rebounds: '20'} }, {upsert: true} )
Le champ « équipe » contenant déjà des informations pour les « Mavs », aucun des documents ne sera modifié.
Cependant, supposons que nous utilisions le code suivant pour insérer un document pour l’équipe « Hornets » :
db.teams.update( { team : 'Hornets' }, { $setOnInsert: {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true} )
Puisque le champ « équipe » ne contient pas déjà d’informations pour les « Hornets », un nouveau document sera ajouté à la collection avec les valeurs que nous avons précisées pour chaque champ.
Voici à quoi ressemble la collection mise à jour :
{ _id: ObjectId("6203df361e95a9885e1e764a"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("6203df361e95a9885e1e764b"), team: 'Spurs', points: 35, rebounds: 12 } { _id: ObjectId("6203df361e95a9885e1e764c"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("6203df361e95a9885e1e764d"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("6203df361e95a9885e1e764e"), team: 'Cavs', points: 23, rebounds: 9 } { _id: ObjectId("6203e17de42bfba74fc73325"), team: 'Hornets', points: '58', rebounds: '20' }
Notez qu’un nouveau document a été ajouté pour l’équipe « Hornets ».
Remarque : Vous pouvez trouver la documentation complète de la fonction $upsert ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment ajouter un nouveau champ
MongoDB : Comment supprimer un champ
MongoDB : Comment compter les valeurs distinctes dans un champ