Definición
$substrObsoleto desde la versión 3.4:
$substrahora es un alias de$substrBytes.Devuelve un substring de un string, comenzando en una posición de índice especificada e incluyendo el número especificado de caracteres. El índice es base cero.
$substrtiene la siguiente sintaxis:{ $substr: [ <string>, <start>, <length> ] } Los argumentos pueden ser cualquier expresión válida, siempre que el primer argumento resuelva a una string, y el segundo y tercer argumentos resuelvan a enteros. Para obtener más información sobre las expresiones, consulta Expresiones.
Comportamiento
Si <start> es un número negativo, $substr devuelve una string vacía "".
Si <length> es un número negativo, $substr devuelve una subcadena que comienza en el índice especificado e incluye el resto de la string.
$substr solo tiene un comportamiento bien definido para cadenas de caracteres ASCII.
Ejemplo
El siguiente ejemplo utiliza la colección movies del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación, consulte Cargar el conjunto de datos de muestra.
Esta operación de agregación utiliza el operador $substr para separar el valor title en un titleStart y un titleRest. La segunda expresión utiliza un <length> negativo para devolver los caracteres desde el índice 3 hasta el final de la cadena:
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { _id: 0, title: 1, titleStart: { $substr: [ "$title", 0, 3 ] }, titleRest: { $substr: [ "$title", 3, -1 ] } } } ] )
[ { title: 'Centennial', titleStart: 'Cen', titleRest: 'tennial' }, { title: 'Baseball', titleStart: 'Bas', titleRest: 'eball' } ]