Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$substrCP (operador de expresión)

$substrCP

Devuelve la subcadena de una cadena. La subcadena comienza con el carácter en el UTF-8especificado. punto de código (CP) índice (basado en cero) en la string para el número de puntos de código especificados.

$substrCP tiene lo siguiente Sintaxis de expresión del operador:

{ $substrCP: [ <string expression>, <code point index>, <code point count> ] }
Campo
Tipo
Descripción

string expression

string

La cadena de la que se extraerá la subcadena. string expression puede ser cualquier expresión válida siempre que se resuelva en una cadena. Para más información sobre expresiones, consulte Expresiones.

Si el argumento se resuelve en un valor de null o se refiere a un campo que falta, $substrCP devuelve una string vacía.

Si el argumento no se resuelve como una string o null ni hace referencia a un campo que falta, $substrCP devuelve un error.

code point index

Número

Indica el punto de inicio de la subcadena. code point index puede ser cualquier expresión válida siempre que resuelva a un número entero no negativo.

code point count

Número

Puede ser cualquier expresión válida siempre que se resuelva en un número entero no negativo que pueda representarse como un número entero (como 2.0).

Ejemplo
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 ] }

"éria"

{ $substrCP: [ "cafétéria", 7, 3 ] }

"ia"

{ $substrCP: [ "cafétéria", 3, 1 ] }

"é"

El operador utiliza los puntos de código $substrCP $substrBytes para extraer la subcadena. Este comportamiento difiere del operador, que extrae la subcadena por el número de bytes, donde cada carácter ocupa entre uno y cuatro bytes.

Considere una colección inventory con los siguientes documentos:

db.inventory.insertMany( [
{ _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 }
] )

La siguiente operación utiliza el operador para separar $substrCP el quarter valor en un yearSubstring y quarterSubstring un. El quarterSubstring campo representa el resto de la cadena a partir del especificado byte index después yearSubstring del. Se calcula restando byte index de la longitud de la cadena $strLenCP utilizando.

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

La operación devuelve los siguientes resultados:

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

Crea una colección food con los siguientes 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" }
] )

El siguiente ejemplo utiliza el operador $substrCP para crear un menuCode de tres bytes a partir del valor name:

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

La operación devuelve los siguientes 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" }

Tip

Volver

$substrBytes

En esta página