Как заменить строки в MongoDB (с примером)


Вы можете использовать следующий синтаксис для замены определенной строки в поле в MongoDB:

db.myCollection.updateMany(
 { fieldName: { $regex : /old/ } },
 [{
 $set : { fieldName: {
 $replaceOne : { input: " $fieldName", find: " old", replacement: " new " }
 }}
 }]
)

В этом конкретном примере строка «old» заменяется на «new» в поле «fieldName» в коллекции под названием myCollection .

В следующем примере показано, как использовать этот синтаксис на практике с группами сбора со следующими документами:

db.teams.insertOne({team: " Mavs", conference: " Western", points: 31})
db.teams.insertOne({team: " Spurs", conference: " Western", points: 22})
db.teams.insertOne({team: " Rockets", conference: " Western", points: 19})
db.teams.insertOne({team: " Celtics", conference: " Eastern", points: 26})
db.teams.insertOne({team: " Cavs", conference: " Eastern", points: 33})
db.teams.insertOne({team: " Nets", conference: " Eastern", points: 38})

Пример: заменить строку в MongoDB

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

db.teams.updateMany(
 { conference: { $regex : /Western/ } },
 [{
 $set : { conference: {
 $replaceOne : { input: "$conference", find: "Western", replacement: " West " }
 }}
 }]
)

Вот как теперь выглядит обновленная коллекция:

{ _id: ObjectId("620139494cb04b772fd7a8fa"),
 team: ' Mavs',
 conference: ' West',
 points: 31 }
{ _id: ObjectId("620139494cb04b772fd7a8fb"),
 team: ' Spurs',
 conference: ' West',
 points: 22 }
{ _id: ObjectId("620139494cb04b772fd7a8fc"),
 team: ' Rockets',
 conference: ' West',
 points: 19 }
{ _id: ObjectId("620139494cb04b772fd7a8fd"),
 team: ' Celtics',
 conference: ' Eastern',
 points: 26 }
{ _id: ObjectId("620139494cb04b772fd7a8fe"),
 team: ' Cavs',
 conference: ' Eastern',
 points: 33 }
{ _id: ObjectId("620139494cb04b772fd7a8ff"),
 team: ' Nets',
 conference: ' Eastern',
 points: 38 } 

Обратите внимание, что каждый документ, в котором в поле конференции была строка «Западная», теперь содержит «Западная» в поле конференции .

Любой документ, в котором не было строки «Западная» в поле конференции, просто сохранял исходную строку.

Примечание.Полную документацию по функции $replaceOne можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как проверить, содержит ли поле строку
MongoDB: как добавить новое поле
MongoDB: как удалить поле