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”

Add a Comment

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