Mongodb: $susbtr 関数の使用方法
MongoDB の$substr関数を使用して、文字列から部分文字列を抽出できます。
この関数は次の基本構文を使用します。
db.myCollection.aggregate([
{ $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}}
])
この特定の例では、位置 0 から始まる「fullString」というラベルの付いたフィールドから 4 文字すべてを抽出します。
次の例は、次のドキュメントを使用したコレクション販売で実際にこの構文を使用する方法を示しています。
db.sales.insertOne({yearMonth: 201702, amount: 40 })
db.sales.insertOne({yearMonth: 201802, amount: 32 })
db.sales.insertOne({yearMonth: 201806, amount: 19 })
db.sales.insertOne({yearMonth: 201910, amount: 29 })
db.sales.insertOne({yearMonth: 201907, amount: 35 })
例: MongoDB で $susbtr 関数を使用する方法
次のコードを使用すると、「yearMonth」フィールドから最初の 4 文字を抽出し、「year」という新しいフィールドに表示できます。
db.sales.aggregate([
{ $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}
])
このコードは次の結果を生成します。
{ _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }
各ドキュメントの「monthyear」フィールドの最初の 4 文字が、「year」というラベルの付いた新しいフィールドに表示されることに注意してください。
このコードは部分文字列のみを表示することに注意することが重要です。
この部分文字列を含むコレクションに新しいフィールドを実際に追加するには、次のように$merge関数を使用する必要があります。
db.sales.aggregate([
{ $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}},
{ $merge : "sales" }
])
更新されたコレクションは次のようになります。
{ _id: ObjectId("620145544cb04b772fd7a929"),
yearMonth: 201702,
amount: 40,
year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"),
yearMonth: 201802,
amount: 32,
year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"),
yearMonth: 201806,
amount: 19,
year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"),
yearMonth: 201910,
amount: 29,
year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"),
yearMonth: 201907,
amount: 35,
year: '2019' }
「year」というタイトルの新しいフィールドがコレクション内の各ドキュメントに追加され、「yearMonth」フィールドの最初の 4 文字が表示されることに注意してください。
注: $substr関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、MongoDB で他の一般的な操作を実行する方法について説明します。
MongoDB: フィールドに文字列が含まれているかどうかを確認する方法
MongoDB: 2 つのフィールドの文字列を連結する方法
MongoDB: 文字列を置換する方法