Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$indexOfCP (operador de expresión)

$indexOfCP

Busca una cadena en busca de una ocurrencia de una subcadena y devuelve el8 punto de código UTF-Índice (basado en cero) de la primera ocurrencia. Si no se encuentra la subcadena,-1 devuelve.

$indexOfCP tiene lo siguiente Sintaxis de expresión del operador:

{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] }
Campo
Tipo
Descripción

<string>

string

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, $indexOfCP 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$indexOfCP error.

<substring>

string

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

<start>

entero

Opcional. Un entero o un número que se pueda representar como enteros 2.0 (como), que especifica la posición inicial del índice de la búsqueda. Puede ser cualquier expresión válida que se resuelva en un número entero no negativo.

Si no se especifica, la posición inicial del índice para la búsqueda es el comienzo de la string.

<end>

entero

Opcional. Un entero, o un número que se pueda representar como enteros 2.0 (como), 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$indexOfCP el <end> valor como <start> valor de índice en lugar del <end> valor.

Si no se especifica, la posición del índice final para la búsqueda es el final de la cadena.

Si <substring expression> se encuentra varias veces dentro <string expression> de, entonces devuelve el índice del $indexOfCP primer <substring expression> encontrado desde la posición del índice inicial.

$indexOfCP nulldevuelve:

  • Si <string expression> es nulo, o

  • Si <string expression> hace referencia a un campo inexistente en el documento de entrada.

$indexOfCP devuelve un error:

  • Si <string expression> no es una cadena ni es nulo, o

  • Si <substring expression> es nulo o no es una cadena o hace referencia a un campo inexistente en el documento de entrada, o

  • Si <start> o <end> es un entero negativo (o un valor que puede representarse como un entero negativo, como -5.0).

$indexOfCP -1devuelve:

  • Si la subcadena no se encuentra en <string expression>, o

  • Si <start> es un número mayor que <end>, o

  • Si <start> es un número mayor que la longitud en bytes de la cadena.

Ejemplo
Resultados

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

3

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

3

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

-1

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

4

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

7

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

-1

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

Error

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

-1

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

-1

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

-1

{ $indexOfCP: [ 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 devolver el índice del punto de código en el $indexOfCP que foo se encuentra la cadena en cada item cadena:

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

La operación devuelve los siguientes resultados:

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

Tip

Volver

$indexOfBytes

En esta página