$substr (agregação)
Nesta página
Definição
$substr
Obsoleto desde a versão 3.4:
$substr
agora é um alias para$substrBytes
.Retorna uma substring de uma string, começando em uma posição de índice especificada e incluindo o número especificado de caracteres. O índice é baseado em zero.
$substr
tem a seguinte sintaxe:{ $substr: [ <string>, <start>, <length> ] } Os argumentos podem ser qualquer expressão válida, desde que o primeiro argumento produza uma string e o segundo e terceiro argumentos produzam números inteiros. Para mais informações sobre expressões, consulte Operadores de Expressão.
Comportamento
Se <start>
for um número negativo, $substr
retornará uma string vazia ""
.
Se <length>
for um número negativo, $substr
retornará uma substring que começa no índice especificado e inclui o restante da string.
$substr
apenas tem um comportamento bem definido para strings de caracteres ASCII.
Exemplo
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 $substr
para separar o valor quarter
em um yearSubstring
e quarterSubstring
:
db.inventory.aggregate( [ { $project: { item: 1, yearSubstring: { $substr: [ "$quarter", 0, 2 ] }, quarterSubtring: { $substr: [ "$quarter", 2, -1 ] } } } ] )
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" }