$strLenCP (aggregation)
Definition
$strLenCPReturns the number of UTF-8 code points in the specified string.
$strLenCPhas the following operator expression syntax:{ $strLenCP: <string expression> } The argument can be any valid expression that resolves to a string.
If the argument resolves to a value of
nullor refers to a missing field,$strLenCPreturns 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 points
in the specified string. This behavior differs from the
$strLenBytes operator that counts the number of bytes in
the string, where each character uses between one and four bytes.
Example
Single-Byte and Multibyte Character Set
Create a food collection:
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: "寿司" } ] ) 
The following example uses the $strLenCP operator to calculate
the length of each name value:
db.food.aggregate( [    {       $project: {          name: 1,          length: { $strLenCP: "$name" }       }    } ] ) 
Example output:
[    { _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: