$strLenCP (agregação)
Nesta página
Definição
$strLenCP
Novidade na versão 3.4.
Retorna o número de8 pontos de UTF- na string especificada.
$strLenCP
tem a seguintesintaxe de expressão do operador :{ $strLenCP: <string expression> } O argumento pode ser qualquer expressão válida que resolva para uma string.
Se o argumento for resolvido para um valor de
null
ou se referir a um campo ausente,$strLenCP
retornará um erro.ExemploResultados{ $strLenCP: "abcde" }
5
{ $strLenCP: "Hello World!" }
12
{ $strLenCP: "cafeteria" }
9
{ $strLenCP: "cafétéria" }
9
{ $strLenCP: "" }
0
{ $strLenCP: "$€λA" }
4
{ $strLenCP: "寿司" }
2
Comportamento
O operador $strLenCP
conta o número de pontos de código na string especificada. Este comportamento difere do operador $strLenBytes
que conta o número de bytes na string, onde cada caractere usa entre um e quatro bytes.
Exemplo
Conjunto de caracteres de byte único e multibyte
Crie uma coleção 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: "寿司" } ] )
O exemplo seguinte utiliza o operador $strLenCP
para calcular length
de cada valor name
:
db.food.aggregate( [ { $project: { name: 1, length: { $strLenCP: "$name" } } } ] )
Saída de exemplo:
[ { _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 } ]