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: Добавить новое поле без значений

Мы можем использовать следующий код, чтобы добавить новое поле под названием «rebounds» с нулевым значением в каждый существующий документ в коллекции:

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 }

Обратите внимание, что в каждом документе теперь есть поле под названием «rebounds» с нулевым значением.

Пример 2. Добавление нового поля с определенным значением

Мы можем использовать следующий код , чтобы добавить новое поле под названием «rebounds» со значением 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 }

Обратите внимание, что в каждом документе теперь есть поле под названием «Rebounds» со значением 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: как делать запросы с регулярным выражением «Нравится»

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.