Definición
$indexOfBytesBusca 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.$indexOfBytestiene lo siguiente Sintaxis de expresión del operador:{ $indexOfBytes: [ <string expression>, <substring expression>, <start>, <end> ] } OperandoDescripció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
nullo se refiere a un campo que falta,$indexOfBytesdevuelvenull.Si la expresión de string no se resuelve en una string o
null, ni se refiere a un campo faltante,$indexOfBytesdevuelve 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 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 í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,$indexOfBytesutiliza el valor<end>como valor de índice<start>en lugar del valor<end>.
Comportamiento
Si
<string expression>es nulo,$indexOfBytesnulldevuelve.Si se llama
$indexOfBytesen un campo que no existe en el documento,$indexOfBytesregresanull.Si
<string expression>no es una string y no es nulo,$indexOfBytesdevuelve un error.Si
<substring expression>es nulo,$indexOfBytesproduce un error.Si
<start>o<end>es un número negativo,$indexOfBytesdevuelve un error.Si
<start>es un número mayor que,<end>$indexOfBytes-1devuelve.Si
<start>es un número mayor que la longitud en bytes de la string,$indexOfBytesdevuelve-1.Si a
<start>o<end>se les da un valor que no sea un entero,$indexOfBytesdevuelve un error.Si
<substring expression>se encuentra varias veces dentro<string expression>de, entonces devuelve el índice del$indexOfBytesprimer<substring expression>encontrado.
Algunos ejemplos breves para destacar diferentes comportamientos:
Ejemplo | Resultados |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ejemplos
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 }