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

$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 la 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 hace referencia 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, $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 final del índice para la búsqueda. Puede ser cualquier expresión válida que dé como resultado un número entero no negativo. Si especifica un valor de índice <end>, también debe especificar un valor de índice <start>; de lo contrario, $indexOfBytes utilizará el valor <end> como valor de índice <start> en lugar del valor <end>.

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