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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *