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
/ /

$indexOfBytes (operador de expresión)

$indexOfBytes

Busca una string en busca de la aparición de una subcadena y devuelve el índice de byte UTF-8 (basado en cero) de la primera aparición. Si no se encuentra la subcadena, retorna -1.

$indexOfBytes tiene lo siguiente Sintaxis de expresión de operador:

{ $indexOfBytes: [ <string expression>, <substring expression>, <start>, <end> ] }
Operando
Descripción

<string expression>

Puede ser cualquier expresión válida siempre que se resuelva en una string. Para obtener más información sobre las expresiones, consulta Expresiones.

Si la expresión de cadena se resuelve en un valor de null o se refiere a un campo que falta, $indexOfBytes devuelve null.

Si la expresión de string no se resuelve en una string o null, ni se refiere a un campo faltante, $indexOfBytes devuelve un error.

<substring expression>

Puede ser cualquier expresión válida siempre que se resuelva en una string. Para obtener más información sobre las expresiones, consulta Expresiones.

<start>

Opcional Un número entero que especifica la posición índice inicial para la búsqueda. Puede ser cualquier expresión válida que se resuelva en un número entero no negativo.

<end>

Opcional Un número entero que especifica la posición índice final para la búsqueda. Puede ser cualquier expresión válida que resuelva un número entero no negativo. Si especificas un valor de índice <end>, también debes especificar un valor de índice <start>; de lo contrario, $indexOfBytes utiliza el valor <end> como valor de índice <start> en lugar del valor <end>.

  • Si <string expression> es nulo, $indexOfBytes regresa null.

  • Si se llama $indexOfBytes en un campo que no existe en el documento, $indexOfBytes regresa null.

  • Si <string expression> no es una string y no es nulo, $indexOfBytes devuelve un error.

  • Si <substring expression> es nulo, $indexOfBytes produce un error.

  • Si <start> o <end> es un número negativo, $indexOfBytes devuelve un error.

  • Si <start> es un número mayor que <end>, $indexOfBytes devuelve -1.

  • Si <start> es un número mayor que la longitud en bytes de la string, $indexOfBytes devuelve -1.

  • Si a <start> o <end> se les da un valor que no sea un entero, $indexOfBytes devuelve un error.

  • Si el <substring expression> se encuentra varias veces dentro del <string expression>, entonces $indexOfBytes devuelve el índice de la primera <substring expression> encontrado.

Algunos ejemplos breves para destacar diferentes comportamientos:

Ejemplo
Resultados

{ $indexOfBytes: [ "cafeteria", "e" ] }

3

{ $indexOfBytes: [ "cafétéria", "é" ] }

3

{ $indexOfBytes: [ "cafétéria", "e" ] }

-1

{ $indexOfBytes: [ "cafétéria", "t" ] }

5

{ $indexOfBytes: [ "foo.bar.fi", ".", 5 ] }

7

{ $indexOfBytes: [ "vanilla", "ll", 0, 2 ] }

-1

{ $indexOfBytes: [ "vanilla", "ll", -1 ] }

-1

{ $indexOfBytes: [ "vanilla", "ll", 12 ] }

-1

{ $indexOfBytes: [ "vanilla", "ll", 5, 2 ] }

-1

{ $indexOfBytes: [ "vanilla", "nilla", 3 ] }

-1

{ $indexOfBytes: [ null, "foo" ] }

null

Considere una colección inventory con los siguientes documentos:

db.inventory.insertMany( [
{ _id: 1, item: "foo" },
{ _id: 2, item: "fóofoo" },
{ _id: 3, item: "the foo bar" },
{ _id: 4, item: "hello world fóo" },
{ _id: 5, item: null },
{ _id: 6, amount: 3 }
] )

La siguiente operación utiliza el operador $indexOfBytes para recuperar los índices en los que se encuentra el string foo en cada elemento:

db.inventory.aggregate(
[
{
$project:
{
byteLocation: { $indexOfBytes: [ "$item", "foo" ] },
}
}
]
)

La operación devuelve los siguientes resultados:

{ _id: 1, byteLocation: "0" }
{ _id: 2, byteLocation: "4" }
{ _id: 3, byteLocation: "4" }
{ _id: 4, byteLocation: "-1" }
{ _id: 5, byteLocation: null }
{ _id: 6, byteLocation: null }

Tip

Volver

$indexOfArray

En esta página