$strLenCP (aggregation)
Definition
New in version 3.4.
Returns the number of UTF-8 code points in the specified string.
$strLenCP
has the following operator expressionsyntax:
- { $strLenCP: <string expression> }
The argument can be any valid expression as long as it resolves to an string. Formore information on expressions, see Expressions.
If the argument resolves to a value of null
or refers to amissing field, $strLenCP
returns an error.
ExampleResults{ $strLenCP: "abcde" }
5
{ $strLenCP: "Hello World!" }
12
{ $strLenCP: "cafeteria" }
9
{ $strLenCP: "cafétéria" }
9
{ $strLenCP: "" }
0
{ $strLenCP: "$€λA" }
4
{ $strLenCP: "寿司" }
2
Behavior
The $strLenCP
operator counts the number of code pointsin the specified string. This behavior differs from the$strLenBytes
operator which counts the number of bytes inthe string, where each character uses between one and four bytes.
Example
Single-Byte and Multibyte Character Set
A collection named food
contains the following documents:
- { "_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" : "寿司" }
The following operation uses the $strLenCP
operator to calculatethe length
of each name
value:
- db.food.aggregate(
- [
- {
- $project: {
- "name": 1,
- "length": { $strLenCP: "$name" }
- }
- }
- ]
- )
The operation returns the following results:
- { "_id" : 1, "name" : "apple", "length" : 5 }
- { "_id" : 2, "name" : "banana", "length" : 6 }
- { "_id" : 3, "name" : "éclair", "length" : 6 }
- { "_id" : 4, "name" : "hamburger", "length" : 9 }
- { "_id" : 5, "name" : "jalapeño", "length" : 8 }
- { "_id" : 6, "name" : "pizza", "length" : 5 }
- { "_id" : 7, "name" : "tacos", "length" : 5 }
- { "_id" : 8, "name" : "寿司", "length" : 2 }
See also