Mongodb: як додати нове поле до колекції


Ви можете використовувати такі методи, щоб додати нове поле до кожного документа в колекції в MongoDB:

Спосіб 1: додайте нове поле без значень

 db.collection.updateMany({}, { $set :{" new_field ": null}})

Спосіб 2. Додайте нове поле з певним значенням

 db.collection.updateMany({}, { $set :{" new_field ": 10 }}) 

Спосіб 3: Додайте нове поле, використовуючи значення з існуючих полів

 db.collection.updateMany(
    {},
    [
        {" $set ": {" name ": { " $concat ": [" $field1 ", " ", " $field2 "]}}}
    ]
)

У наведених нижче прикладах показано, як використовувати кожен метод із групою збору з такими документами:

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

Приклад 1: додайте нове поле без значень

Ми можемо використати такий код, щоб додати нове поле під назвою «bounces» із нульовим значенням до кожного наявного документа в колекції:

 db.teams.updateMany({}, { $set :{" rebounds ": null}})

Ми можемо використати наступний запит для відображення перших оновлених документів:

 db.teams.find().limit( 3 )

Цей запит повертає такі документи:

 { _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 }

Зауважте, що кожен документ тепер має поле під назвою «відмови» з нульовим значенням.

Приклад 2: додайте нове поле з певним значенням

Ми можемо використати такий код , щоб додати нове поле під назвою «bounces» зі значенням 10 до кожного наявного документа в колекції:

 db.teams.updateMany({}, { $set :{" rebounds ": 10 }})

Ми можемо використати наступний запит для відображення перших оновлених документів:

 db.teams.find().limit( 3 )

Цей запит повертає такі документи:

 { _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 }

Зауважте, що кожен документ тепер має поле під назвою «відмови» зі значенням 10.

Приклад 3: додайте нове поле, використовуючи значення з існуючих полів

Ми можемо використати наступний код, щоб додати поле під назвою «ім’я», значення якого є конкатенацією існуючих полів «команда» та «посада»:

 db.teams.updateMany(
    {},
    [
        {" $set ": {" name ": { " $concat ": [" $team ", " ", " $position "]}}}
    ]
)

Ми можемо використати наступний запит для відображення перших оновлених документів:

 db.teams.find().limit( 3 )

Цей запит повертає такі документи:

 { _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' }

Зауважте, що кожен документ тепер має поле під назвою «ім’я», значення якого є конкатенацією полів «команда» та «посада».

Примітка . Повну документацію щодо функції updateMany() можна знайти тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в MongoDB:

MongoDB: Як перейменувати поля
MongoDB: як видалити поля
MongoDB: як перевірити, чи поле містить рядок
MongoDB: як робити запит із діапазоном дат
MongoDB: як робити запити за допомогою регулярного виразу «Подобається».

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *