Definición
$trimElimina los caracteres de espacio en blanco, incluidos los nulos, o los caracteres especificados desde el principio y el final de una string.
$trimtiene la siguiente sintaxis:{ $trim: { input: <string>, chars: <string> } } El
$trimprocesa un documento con los siguientes campos:CampoDescripcióninputLa string que se va a recortar. El argumento puede ser cualquier expresión válida que se resuelva en una string. Para más información sobre expresiones, consulte Expresiones.
charsopcional. El(los) carácter(es) a recortar de
input.El argumento puede ser cualquier expresión válida que se resuelva en una cadena. El operador divide
$trimla cadena en puntos de código UTF individuales para recortarinputde.Si no se especifica,
$trimremueve los caracteres de espacio en blanco, incluido el carácter nulo. Para la lista de caracteres de espacio en blanco, consulta Caracteres de espacio en blanco.
Comportamiento
Por defecto,
$trimelimina los caracteres de espacio en blanco, incluido el carácter nulo:EjemploResultados{ $trim: { input: " \n good bye \t " } }"good bye"Puedes sobrescribir los caracteres por defecto para recortar usando el campo
chars.Por ejemplo, lo siguiente elimina cualquier
gyedel inicio y final de la entrada. Dado que la entrada comienza con un espacio en blanco, ningún carácter puede ser eliminado del inicio de la string.EjemploResultados{ $trim: { input: " ggggoodbyeeeee", chars: "ge" } }" ggggoodby"Si se cambian los caracteres por defecto para recortar, se puede incluir explícitamente el (los) carácter(es) de espacio en blanco que se deben recortar en el campo
chars.Por ejemplo, lo siguiente recorta cualquier espacio,
g,edel inicio y del final de la entrada.EjemploResultados{ $trim: { input: " ggggoodbyeeeee", chars: " ge" } }"oodby"
Caracteres de espacio en blanco
Por defecto, $trim remueve los siguientes espacios en blanco, incluido el carácter nulo:
Unicode | Secuencia de escape | Descripción |
|---|---|---|
U+0000 | '0' | Carácter nulo |
U+0020 | ' ' | Espacio |
U+0009 | 't' | Horizontal tab |
U+000A | 'n' | Alimentación de línea/nueva línea |
U+000B | 'v' | Pestaña vertical |
U+000C | 'f' | Salto de página |
U+000D | 'r' | Retorno de carro |
U+00A0 | Espacio sin salto | |
U+1680 | Marca de espacio ogham | |
U+2000 | En quad | |
U+2001 | Em quad | |
U+2002 | En space | |
U+2003 | Em space | |
U+2004 | Three-per-em space | |
U+2005 | Four-per-em space | |
U+2006 | Six-per-em space | |
U+2007 | Espacio de cifra | |
U+2008 | Espacio de puntuación | |
U+2009 | Espacio delgado | |
U+200A | Espaciador delgado |
Limitaciones
A partir de MongoDB 7.0.33, la longitud de la string que se proporciona a chars está limitada a 4096 caracteres. Si proporcionas una string más larga de 4096 caracteres, MongoDB devolverá un error similar al siguiente:
$trim/$ltrim/$rtrim requires 'chars' to be not greater than 4096 bytes, got <length> bytes instead.
Ejemplo
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 \n The product is in stock. \n\n " }, { _id: 3, item: "XYZ1", quarter: "14Q2", description: null } ] )
La siguiente operación utiliza el operador $trim para remover los espacios en blanco al principio y al final del campo description:
db.inventory.aggregate([ { $project: { item: 1, description: { $trim: { input: "$description" } } } } ])
La operación devuelve los siguientes resultados:
{ _id: 1, item: "ABC1", description: "product 1" } { _id: 3, item: "XYZ1", description: null } { _id: 2, item: "ABC2", description: "product 2 \n The product is in stock." }