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”