Definición
$indexOfCPBusca una string para encontrar la presencia de una subcadena y devuelve el UTF-8 punto de código índice (base cero) de la primera ocurrencia. Si no se encuentra la subcadena, retorna
-1.$indexOfCPtiene lo siguiente Sintaxis de expresión del 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 se refiere a un campo que falta,$indexOfCPdevuelvenull.Si la expresión de string no se resuelve en una string o
null, ni se refiere a un campo faltante,$indexOfCPdevuelve un error.<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 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$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 se encuentra el <substring expression> varias veces dentro del <string expression>, entonces $indexOfCP devuelve el índice del primer <substring expression> encontrado desde la posición inicial del índice.
$indexOfCP devuelve null:
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 cadena o hace referencia 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 devuelve -1:
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 en bytes de la cadena.
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 $indexOfCP para devolver el índice de punto de código en el que se encuentra la cadena foo en cada cadena item:
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 }