Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$substrCP(集計)

項目一覧

  • 定義
  • 動作
$substrCP

string の部分文字列を返します。 部分文字列は指定された UTF-8 コード ポイント(CP) の文字で始まる 指定されたコード ポイント数に対する string 内のインデックス(ゼロ ベース)。

$substrCPには次の演算子式の構文があります。

{ $substrCP: [ <string expression>, <code point index>, <code point count> ] }
フィールド
タイプ
説明

string expression

string

部分文字列が抽出される string。 string expressionは、string に変換される限り、任意の有効なにすることができます。 式の詳細については、「式演算子 」を参照してください。

引数が の値に解決されるか、欠落しているフィールドを参照する場合、null $substrCPは空の string を返します。

引数が string またはnull に解決されず、欠落しているフィールドを参照しない場合は、$substrCP はエラーを返します。

code point index

数値

部分文字列の開始点を示します。 code point indexは、負でない整数に変換される限り、任意の有効なにすることができます。

code point count

数値

は、整数で表せる負でない整数または数値(2.0など)に解決される限り、任意の有効なを指定できます。

結果

{ $substrCP: [ "abcde", 1, 2 ] }

"bc"

{ $substrCP: [ "Hello World!", 6, 5 ] }

"World"

{ $substrCP: [ "cafétéria", 0, 5 ] }

"cafét"

{ $substrCP: [ "cafétéria", 5, 4 ] }

"éria"

{ $substrCP: [ "cafétéria", 7, 3 ] }

"ia"

{ $substrCP: [ "cafétéria", 3, 1 ] }

"é"

$substrCP演算子は、コード ポイントを使用して部分文字列を抽出します。 この動作は、バイト数で部分文字列を抽出する$substrBytes演算子とは異なります。各文字は 1 から 4 バイトの間を使用します。

以下のドキュメントを持つinventoryコレクションを検討してください。

{ "_id" : 1, "item" : "ABC1", quarter: "13Q1", "description" : "product 1" }
{ "_id" : 2, "item" : "ABC2", quarter: "13Q4", "description" : "product 2" }
{ "_id" : 3, "item" : "XYZ1", quarter: "14Q2", "description" : null }

次の操作では、 $substrCP演算子を使用して、 quarterの値をyearSubstringquarterSubstringに分割します。 quarterSubstringフィールドは、 yearSubstringに続く指定されたbyte indexからの string の残りの部分を表します。 これは、 $strLenCPを使用して string の長さからbyte indexを減算して計算されます。

db.inventory.aggregate(
[
{
$project: {
item: 1,
yearSubstring: { $substrCP: [ "$quarter", 0, 2 ] },
quarterSubtring: {
$substrCP: [
"$quarter", 2, { $subtract: [ { $strLenCP: "$quarter" }, 2 ] }
]
}
}
}
]
)

この操作は次の結果を返します。

{ "_id" : 1, "item" : "ABC1", "yearSubstring" : "13", "quarterSubtring" : "Q1" }
{ "_id" : 2, "item" : "ABC2", "yearSubstring" : "13", "quarterSubtring" : "Q4" }
{ "_id" : 3, "item" : "XYZ1", "yearSubstring" : "14", "quarterSubtring" : "Q2" }

次のドキュメントを使用して food コレクションを作成します。

db.food.insertMany(
[
{ "_id" : 1, "name" : "apple" },
{ "_id" : 2, "name" : "banana" },
{ "_id" : 3, "name" : "éclair" },
{ "_id" : 4, "name" : "hamburger" },
{ "_id" : 5, "name" : "jalapeño" },
{ "_id" : 6, "name" : "pizza" },
{ "_id" : 7, "name" : "tacos" },
{ "_id" : 8, "name" : "寿司sushi" }
]
)

次の例では、 $substrCP演算子を使用して、 nameの値から 3 バイトのmenuCodeを作成します。

db.food.aggregate(
[
{
$project: {
"name": 1,
"menuCode": { $substrCP: [ "$name", 0, 3 ] }
}
}
]
)

この操作は次の結果を返します。

{ "_id" : 1, "name" : "apple", "menuCode" : "app" }
{ "_id" : 2, "name" : "banana", "menuCode" : "ban" }
{ "_id" : 3, "name" : "éclair", "menuCode" : "écl" }
{ "_id" : 4, "name" : "hamburger", "menuCode" : "ham" }
{ "_id" : 5, "name" : "jalapeño", "menuCode" : "jal" }
{ "_id" : 6, "name" : "pizza", "menuCode" : "piz" }
{ "_id" : 7, "name" : "tacos", "menuCode" : "tac" }
{ "_id" : 8, "name" : "寿司sushi", "menuCode" : "寿司s" }

Tip

以下も参照してください。

戻る

$substrBytes

項目一覧