Mongodb: як об’єднати рядки з двох полів


Ви можете використовувати такий синтаксис, щоб об’єднати рядки з двох полів у нове поле в MongoDB:

 db.myCollection.aggregate([
  { $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } },
  { $merge : "myCollection" }
])

Цей конкретний приклад об’єднує рядки «field1» і «field2» у нове поле під назвою «newfield» і додає нове поле до колекції під назвою 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

Ми можемо використати такий код, щоб об’єднати рядки з полів «team» і «conference» у нове поле під назвою «teamConf» і додати це поле до колекції teams :

 db.teams.aggregate([
  { $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } },
  { $merge : "teams" }
])

Ось так зараз виглядає оновлена колекція:

 { _id: ObjectId("62013d8c4cb04b772fd7a90c"),
  team: 'Mavs',
  conference: 'Western',
  points: 31,
  teamConf: 'Mavs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
  team: 'Spurs',
  conference: 'Western',
  points: 22,
  teamConf: 'Spurs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
  team: 'Rockets',
  conference: 'Western',
  points: 19,
  teamConf: 'Rockets - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
  team: 'Celtics',
  conference: 'Eastern',
  points: 26,
  teamConf: 'Celtics - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
  team: 'Cavs',
  conference: 'Eastern',
  points: 33,
  teamConf: 'Cavs - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
  team: 'Nets',
  conference: 'Eastern',
  points: 38,
  teamConf: 'Nets - Eastern' }

Зауважте, що кожен документ має нове поле під назвою «teamConf», яке містить об’єднання полів «team» і «conference».

Для цього конкретного прикладу ми вирішили об’єднати два рядки, використовуючи дефіс як роздільник.

Однак ми можемо об’єднати два рядки без будь-яких значень роздільників між ними.

Наступний код показує, як це зробити:

 db.teams.aggregate([
  { $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } },
  { $merge : "teams" }
])

Ось як виглядатиме оновлена колекція:

 { _id: ObjectId("62013d8c4cb04b772fd7a90c"),
  team: 'Mavs',
  conference: 'Western',
  points: 31,
  teamConf: 'MavsWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
  team: 'Spurs',
  conference: 'Western',
  points: 22,
  teamConf: 'SpursWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
  team: 'Rockets',
  conference: 'Western',
  points: 19,
  teamConf: 'RocketWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
  team: 'Celtics',
  conference: 'Eastern',
  points: 26,
  teamConf: 'CelticsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
  team: 'Cavs',
  conference: 'Eastern',
  points: 33,
  teamConf: 'CavsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
  team: 'Nets',
  conference: 'Eastern',
  points: 38,
  teamConf: 'NetsEastern' }

Зауважте, що нове поле під назвою «teamConf» містить конкатенацію полів «team» і «conference» без будь-якого значення розділення між ними.

Примітка . Ви можете знайти повну документацію для функції $concat тут .

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

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

MongoDB: як перевірити, чи поле містить рядок
MongoDB: Як додати нове поле
MongoDB: як видалити поле

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

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