Mongodb: jak połączyć ciągi dwóch pól


Możesz użyć następującej składni, aby połączyć ciągi z dwóch pól w nowe pole w MongoDB:

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

Ten konkretny przykład łączy ciągi „field1” i „field2” w nowe pole o nazwie „newfield” i dodaje nowe pole do kolekcji o nazwie myCollection .

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce w przypadku zespołu windykacyjnego z następującymi dokumentami:

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

Przykład: łączenie ciągów w MongoDB

Możemy użyć poniższego kodu, aby połączyć ciągi z pól „zespół” i „konferencja” w nowe pole o nazwie „teamConf” i dodać to pole do kolekcji zespołów :

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

Tak wygląda teraz zaktualizowana kolekcja:

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

Należy pamiętać, że każdy dokument ma nowe pole zatytułowane „teamConf”, które zawiera połączenie pól „zespół” i „konferencja”.

W tym konkretnym przykładzie zdecydowaliśmy się połączyć dwa ciągi, używając łącznika jako separatora.

Możemy jednak zdecydować się na połączenie dwóch ciągów bez żadnych wartości oddzielających między nimi.

Poniższy kod pokazuje, jak to zrobić:

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

Oto jak będzie wyglądać zaktualizowana kolekcja:

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

Należy zauważyć, że nowe pole zatytułowane „teamConf” zawiera połączenie pól „zespół” i „konferencja” bez żadnej wartości rozdzielenia między nimi.

Uwaga : Pełną dokumentację funkcji $concat można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak dodać nowe pole
MongoDB: Jak usunąć pole

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *