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
