Mongodb: 2 つのフィールドの文字列を連結する方法


次の構文を使用して、2 つのフィールドの文字列を 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」という新しいフィールドに連結し、このフィールドをチームコレクションに追加できます。

 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」というタイトルの新しいフィールドがあることに注意してください。

この特定の例では、区切り文字としてハイフンを使用して 2 つの文字列を連結することにしました。

ただし、間に区切り値を入れずに 2 つの文字列を連結することもできます。

次のコードは、これを行う方法を示しています。

 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」というタイトルの新しいフィールドには、「チーム」フィールドと「会議」フィールドを分離値なしで連結したものが含まれていることに注意してください。

: $concat関数の完全なドキュメントはここで見つけることができます。

追加リソース

次のチュートリアルでは、MongoDB で他の一般的な操作を実行する方法について説明します。

MongoDB: フィールドに文字列が含まれているかどうかを確認する方法
MongoDB: 新しいフィールドを追加する方法
MongoDB: フィールドを削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です