Mongodb: 文字列を部分文字列の配列に分割する方法


次の構文を使用して、MongoDB で文字列を部分文字列の配列に分割できます。

 db.myCollection.aggregate([
  { $project : { split_field: { $split : [ " $field1 ", " " ] } } },
  { $merge : "myCollection" }
])

この特定の例では、文字列「field1」をスペースに基づいて「split_field」という名前の新しいフィールドに分割し、その新しいフィールドをmyCollectionという名前のコレクションに追加します。

次の例は、次のドキュメントを使用して収集チームで実際にこの構文を使用する方法を示しています

 db.teams.insertOne({name: " Dallas Mavs ", points: 31})
db.teams.insertOne({name: " San Antonio Spurs ", points: 22})
db.teams.insertOne({name: " Houston Rockets ", points: 19})
db.teams.insertOne({name: " Boston Celtics ", points: 26})
db.teams.insertOne({name: " Cleveland Cavs ", points: 33})

例: MongoDB で文字列を部分文字列の配列に分割する

次のコードを使用すると、「name」列の文字列を文字列の配列に分割し、その結果をチームコレクションの「split_name」という名前の新しいフィールドに表示できます。

 db.teams.aggregate([
  { $project : { split_name: { $split : [ " $name ", " " ] } } },
  { $merge : "teams" }
])

更新されたコレクションは次のようになります。

 { _id: ObjectId("62014a924cb04b772fd7a938"),
  name: 'Dallas Mavs',
  points: 31,
  split_name: ['Dallas', 'Mavs'] }
{ _id: ObjectId("62014a924cb04b772fd7a939"),
  name: 'San Antonio Spurs',
  points: 22,
  split_name: ['San', 'Antonio', 'Spurs'] }
{ _id: ObjectId("62014a924cb04b772fd7a93a"),
  name: 'Houston Rockets',
  points: 19,
  split_name: ['Houston', 'Rockets'] }
{ _id: ObjectId("62014a924cb04b772fd7a93b"),
  name: 'Boston Celtics',
  points: 26,
  split_name: ['Boston', 'Celtics'] }
{ _id: ObjectId("62014a924cb04b772fd7a93c"),
  name: 'Cleveland Cavs',
  points: 33,
  split_name: ['Cleveland', 'Cavs'] }

各ドキュメントには、「split_name」と呼ばれる新しいフィールドがあり、「name」フィールドの部分文字列の配列が含まれていることに注意してください。

この特定の例では、区切り文字として空白スペースを使用して元の文字列を分割することを選択しました。

文字列が別の区切り文字 (ハイフン、スラッシュ、コロンなど) で区切られている場合は、 $split関数でその区切り文字を使用するだけです。

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

追加リソース

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

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

コメントを追加する

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