Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$substrCP (operador de expresión)

$substrCP

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

$substrCP tiene la siguiente sintaxis de expresión de operador:

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

string expression

string

La string de la que se extraerá la subcadena. string expression puede ser cualquier expresión válida, siempre que se resuelva en una string. Para obtener 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 no existe, $substrCP devuelve una cadena vacía.

Si el argumento no se resuelve en una cadena o null ni hace referencia a un campo faltante, $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 $substrCP utiliza los puntos de código para extraer la subcadena. Este comportamiento difiere del operador $substrBytes, que extrae la subcadena según el número de bytes, donde cada carácter utiliza 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 $substrCP para separar el valor quarter en yearSubstring y quarterSubstring. El campo quarterSubstring representa el resto de la cadena a partir del byte index especificado que sigue al yearSubstring. Se calcula restando el byte index de la longitud de la cadena utilizando $strLenCP.

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" }
Califique esta página