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

$strLenBytes(集計)

項目一覧

  • 定義
  • 動作
$strLenBytes

バージョン 3.4 で追加

指定された string 内の UTF-8 でエンコードされたバイト数を返します。

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

{ $strLenBytes: <string expression> }

引数は、string に変換される限り、どのような有効なでも使用できます。 式の詳細については、「式 」を参照してください。

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

$strLenBytes演算子は、各文字が 1 バイトから 4 バイトの間を使用できる string 内の UTF- 8でエンコードされたバイト数をカウントします。

たとえば、US-ASCII 文字は 1 バイトを使用してエンコードされます。 発音区別符号を持つ文字と追加のラテン文字(アルファベットの外のラテン文字)を持つ文字は、2 バイトを使用してエンコードされます。 中国語、日本語、 韓国語の文字は通常 3 バイト必要であり、Unicode の他のプレーン(文字列、数学記号など)には 4 バイトが必要です。

$strLenBytes演算子は、$strLenCP コード ポイント をカウントするstring 演算子とは異なります。 各文字が使用するバイト数に関係なく、指定された 内で 。

結果
ノート
{ $strLenBytes: "abcde" }
5
各文字は 1 バイトを使用してエンコードされます。
{ $strLenBytes: "Hello World!" }
12
各文字は 1 バイトを使用してエンコードされます。
{ $strLenBytes: "cafeteria" }
9
各文字は 1 バイトを使用してエンコードされます。
{ $strLenBytes: "cafétéria" }
11
é は 2 バイトを使用してエンコードされます。
{ $strLenBytes: "" }
0
空の文字列は 0 を返します。
{ $strLenBytes: "$€λG" }
7
は 3 バイトを使用してエンコードされます。 λは 2 バイトを使用してエンコードされています。
{ $strLenBytes: "寿司" }
6
各文字は 3 バイトを使用してエンコードされます。

次のドキュメントを使用して 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" : "寿司" }
]
)

次の操作では、 $strLenBytes演算子を使用して、各name値のlengthを計算します。

db.food.aggregate(
[
{
$project: {
"name": 1,
"length": { $strLenBytes: "$name" }
}
}
]
)

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

{ "_id" : 1, "name" : "apple", "length" : 5 }
{ "_id" : 2, "name" : "banana", "length" : 6 }
{ "_id" : 3, "name" : "éclair", "length" : 7 }
{ "_id" : 4, "name" : "hamburger", "length" : 9 }
{ "_id" : 5, "name" : "jalapeño", "length" : 9 }
{ "_id" : 6, "name" : "pizza", "length" : 5 }
{ "_id" : 7, "name" : "tacos", "length" : 5 }
{ "_id" : 8, "name" : "寿司", "length" : 6 }

_id: 3_id: 5を含むドキュメントにはそれぞれ、エンコードに 2 バイトが必要な発音区別文字(それぞれéñ )が含まれています。 _id: 8を含むドキュメントには、それぞれ 3 バイトを使用してエンコードされた 2 つの日本語の文字が含まれています。 これにより、 _id: 3_id: 5_id: 8を含むドキュメントのnameの文字数よりもlengthが大きくなります。

Tip

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

  • $strLenCP

  • $binarySize

戻る

$strcasecmp

項目一覧