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