Mongodb: como adicionar um novo campo a uma coleção
Você pode usar os seguintes métodos para adicionar um novo campo a cada documento em uma coleção no MongoDB:
Método 1: adicione um novo campo sem valores
db.collection.updateMany({}, { $set :{" new_field ": null}})
Método 2: adicione um novo campo com um valor específico
db.collection.updateMany({}, { $set :{" new_field ": 10 }})
Método 3: adicionar um novo campo usando valores de campos existentes
db.collection.updateMany(
{},
[
{" $set ": {" name ": { " $concat ": [" $field1 ", " ", " $field2 "]}}}
]
)
Os exemplos a seguir mostram como usar cada método com uma equipe de coleta com os seguintes documentos:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Exemplo 1: Adicione um novo campo sem valores
Podemos usar o código a seguir para adicionar um novo campo chamado “bounces” com valor nulo a cada documento existente na coleção:
db.teams.updateMany({}, { $set :{" rebounds ": null}})
Podemos usar a seguinte consulta para exibir os primeiros documentos atualizados:
db.teams.find().limit( 3 )
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("6189325896cd2ba58ce928e5"),
team: 'Mavs',
position: 'Guard',
points: 31,
rebounds: null }
{ _id: ObjectId("6189325896cd2ba58ce928e6"),
team: 'Spurs',
position: 'Guard',
points: 22,
rebounds: null }
{ _id: ObjectId("6189325896cd2ba58ce928e7"),
team: 'Rockets',
position: 'Center',
points: 19,
rebounds: null }
Observe que cada documento agora possui um campo chamado “rejeições” com valor nulo.
Exemplo 2: Adicione um novo campo com um valor específico
Podemos usar o código a seguir para adicionar um novo campo chamado “bounces” com valor 10 para cada documento existente na coleção:
db.teams.updateMany({}, { $set :{" rebounds ": 10 }})
Podemos usar a seguinte consulta para exibir os primeiros documentos atualizados:
db.teams.find().limit( 3 )
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("6189325896cd2ba58ce928e5"),
team: 'Mavs',
position: 'Guard',
points: 31,
rebounds: 10 }
{ _id: ObjectId("6189325896cd2ba58ce928e6"),
team: 'Spurs',
position: 'Guard',
points: 22,
rebounds: 10 }
{ _id: ObjectId("6189325896cd2ba58ce928e7"),
team: 'Rockets',
position: 'Center',
points: 19,
rebounds: 10 }
Observe que cada documento agora possui um campo chamado “rejeições” com valor 10.
Exemplo 3: Adicione um novo campo usando valores de campos existentes
Podemos usar o seguinte código para adicionar um campo chamado “nome” cujo valor é uma concatenação dos campos “equipe” e “posição” existentes:
db.teams.updateMany(
{},
[
{" $set ": {" name ": { " $concat ": [" $team ", " ", " $position "]}}}
]
)
Podemos usar a seguinte consulta para exibir os primeiros documentos atualizados:
db.teams.find().limit( 3 )
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("618934cb96cd2ba58ce928ea"),
team: 'Mavs',
position: 'Guard',
points: 31,
name: 'Mavs Guard' }
{ _id: ObjectId("618934cb96cd2ba58ce928eb"),
team: 'Spurs',
position: 'Guard',
points: 22,
name: 'Spurs Guard' }
{ _id: ObjectId("618934cb96cd2ba58ce928ec"),
team: 'Rockets',
position: 'Center',
points: 19,
name: 'Rockets Center' }
Observe que cada documento agora possui um campo chamado “nome” cujo valor é uma concatenação dos campos “equipe” e “cargo”.
Nota : Você pode encontrar a documentação completa para a função updateMany() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no MongoDB:
MongoDB: Como renomear campos
MongoDB: Como excluir campos
MongoDB: Como verificar se o campo contém uma string
MongoDB: Como consultar com um intervalo de datas
MongoDB: Como consultar com uma expressão regular “Like”