Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$substrCP (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$substrCP

Retorna a substring de uma string. A substring começa com o caractere especificado8 noponto de código (CP) índice (baseado em zero) na string para o número de pontos de código especificados.

$substrCP tem a seguintesintaxe de expressão do operador :

{ $substrCP: [ <string expression>, <code point index>, <code point count> ] }
Campo
Tipo
Descrição
string expression
string

A string da qual a substring será extraída. string expression pode ser qualquer expressão válida desde que resolva para uma string. Para mais informações sobre expressões, consulte Expressões.

Se o argumento for resolvido para um valor de null ou se referir a um campo ausente, $substrCP retornará uma string vazia.

Se o argumento não se resolver em uma string ou null nem se referir a um campo ausente, $substrCP retornará um erro.

code point index
número
Indica o ponto de partida da substring. code point index pode ser qualquer expressão válida, desde que resolva para um número inteiro não negativo.
code point count
número
Pode ser qualquer expressão válida, desde que resolva para um número inteiro não negativo ou número que possa ser representado como um número inteiro (como 2.0).
Exemplo
Resultados
{ $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 ] }
"tér"
{ $substrCP: [ "cafétéria", 7, 3 ] }
"ia"
{ $substrCP: [ "cafétéria", 3, 1 ] }
"é"

O operador $substrCP usa os pontos de código para extrair a substring. Este comportamento difere do operador $substrBytes que extrai a substring pelo número de bytes, em que cada caractere utiliza entre um e quatro bytes.

Considere uma coleção inventory com os seguintes documentos:

{ "_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 }

A operação a seguir usa o operador $substrCP para separar o valor quarter em um yearSubstring e um quarterSubstring. O campo quarterSubstring representa o resto da string a partir do byte index especificado depois de yearSubstring. Ele é calculado subtraindo o byte index do comprimento da string utilizando $strLenCP.

db.inventory.aggregate(
[
{
$project: {
item: 1,
yearSubstring: { $substrCP: [ "$quarter", 0, 2 ] },
quarterSubtring: {
$substrCP: [
"$quarter", 2, { $subtract: [ { $strLenCP: "$quarter" }, 2 ] }
]
}
}
}
]
)

A operação retorna os seguintes resultados:

{ "_id" : 1, "item" : "ABC1", "yearSubstring" : "13", "quarterSubtring" : "Q1" }
{ "_id" : 2, "item" : "ABC2", "yearSubstring" : "13", "quarterSubtring" : "Q4" }
{ "_id" : 3, "item" : "XYZ1", "yearSubstring" : "14", "quarterSubtring" : "Q2" }

Criar uma coleção food com os seguintes documentos:

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" }
]
)

O exemplo seguinte utiliza o operador $substrCP para criar um menuCode de três bytes a partir do valor name:

db.food.aggregate(
[
{
$project: {
"name": 1,
"menuCode": { $substrCP: [ "$name", 0, 3 ] }
}
}
]
)

A operação retorna os seguintes resultados:

{ "_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" }

Dica

Veja também:

← $substrBytes (agregação)