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 del 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 cadena. Para más información sobre expresiones, consulte 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 cadena no se resuelve en una cadena o null ni hace referencia a un campo faltante, devuelve un$indexOfBytes error.

<substring expression>

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

<start>

Opcional: Un número entero que especifica la posición inicial del índice de la búsqueda. Puede ser cualquier expresión válida que dé como resultado un número entero no negativo.

<end>

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

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

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

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

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

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

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

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

  • Si <start> <end> a o se le asigna un valor que no es un entero, devuelve un$indexOfBytes error.

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

Algunos ejemplos breves para resaltar 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 para recuperar los índices en los $indexOfBytes que foo se encuentra la cadena 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