Mongodb: como inserir se não existir


Você pode usar a seguinte sintaxe para inserir um documento em uma coleção no MongoDB somente se ele ainda não existir:

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

Este código específico verifica se o campo “team” possui o valor “Hornets”. Se esse valor existir, nada acontecerá.

Porém, caso este valor não exista então irá inserir um documento com valores específicos para os campos “equipe”, “pontos” e “rebotes”.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Inserir se não existir no MongoDB

Digamos que temos uma coleção chamada equipes com os seguintes documentos:

 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})

Digamos que usamos o seguinte código para tentar inserir um documento para a equipe “Mavs”:

 db.teams.update(
	{
	  team: 'Mavs'
	}, 
	 {
	  $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

O campo “equipe” já contém informações dos “Mavs”, nenhum dos documentos será modificado.

Porém, digamos que usamos o seguinte código para inserir um documento para a equipe “Hornets”:

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

Como o campo “time” ainda não contém informações dos “Hornets”, um novo documento será adicionado à coleção com os valores que especificamos para cada campo.

Esta é a aparência da coleção atualizada:

 { _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',
  dots: '58',
  rebounds: '20' }

Observe que um novo documento foi adicionado para a equipe “Hornets”.

Nota : Você pode encontrar a documentação completa da função $upsert aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:

MongoDB: Como adicionar um novo campo
MongoDB: Como excluir um campo
MongoDB: Como contar valores distintos em um campo

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *