Docs Menu
Docs Home
/
データベース マニュアル
/ / /

$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コレクションを検討してください。

db.inventory.insertMany( [
{ _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" }

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

戻る

$substrBytes

項目一覧