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: як видалити поле