Definición
$indexOfCPBusca en una cadena la aparición de una subcadena y devuelve el índice8 del punto de código UTF- (basado en cero) de la primera aparición. Si no se encuentra la subcadena,
-1devuelve.$indexOfCPtiene la siguiente sintaxis de expresión de operador:{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] } CampoTipoDescripción<string>string
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 hace referencia a un campo que falta,$indexOfCPnulldevuelve.Si la expresión de cadena no se resuelve en una cadena o
nullni hace referencia a un campo faltante, devuelve un$indexOfCPerror.<substring>string
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>entero
opcional. Un entero, o un número que pueda representarse como enteros (como 2.0), que especifica la posición del índice inicial para la búsqueda. Puede ser cualquier expresión válida que resuelva a un número integral 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 número entero, o un número que se pueda representar como enteros 2.0 (como), 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
<end>valor de índice, también debe especificar un<start>valor de índice; de lo contrario, utiliza$indexOfCPel<end>valor como<start>valor de índice en lugar del<end>valor.Si no se especifica, la posición de índice de finalización de la búsqueda es el final de la string.
Comportamiento
Si el <substring expression> se encuentra varias veces dentro <string expression> del, entonces devuelve el índice del $indexOfCP primer <substring expression> encontrado desde la posición del índice inicial.
$indexOfCP nulldevuelve:
Si
<string expression>es nulo, oSi
<string expression>se refiere a un campo inexistente en el documento de entrada.
$indexOfCP devuelve un error:
Si
<string expression>no es una cadena y no es nulo, oSi
<substring expression>es nulo o no es una string o se refiere a un campo inexistente en el documento de entrada, oSi
<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 el
<string expression>, oSi
<start>es un número mayor que<end>, oSi
<start>es un número mayor que la longitud de bytes de la string.
Ejemplo | Resultados |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
| Error |
|
|
|
|
|
|
|
|
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 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 }