Funciones de administración de colecciones collection-management-functions

Acerca de las funciones de recopilación de consultas

El lenguaje de expresión también introduce un conjunto de funciones para consultar colecciones. Estas funciones se explican a continuación.

En los ejemplos siguientes, se utiliza un evento denominado “LobbyBeacon” que contiene una colección de tokens de notificaciones push. Los ejemplos de esta página utilizan la estructura de carga útil de evento que se muestra a continuación:

                {
   "_experience":{
      "campaign":{
         "message":{
            "profile":{
               "pushNotificationTokens":[
                  {
                     "token":"token_1",
                     "application":{
                        "_id":"APP1",
                        "name":"MarltonMobileApp",
                        "version":"1.0"
                     }
                  },
                  {
                     "token":"token_2",
                     "application":{
                        "_id":"APP2",
                        "name":"MarketplaceApp",
                        "version":"1.0"
                     }
                  },
                  {
                     "token":"token_3",
                     "application":{
                        "_id":"APP3",
                        "name":"VendorApp",
                        "version":"2.0"
                     }
                  }
               ]
            }
         }
      }
   },
   "timestamp":"1536160728"
}
NOTE
En los ejemplos siguientes, se hace referencia a esta carga útil mediante @event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens}, donde "LobbyBeacon" es el nombre del evento y el resto de la ruta corresponde a la estructura mostrada anteriormente.

La función all(<condition>)

La función all habilita la definición de un filtro en una colección determinada mediante una expresión booleana.

<listExpression>.all(<condition>)

Ejemplo conceptual: Entre todos los usuarios de la aplicación, puede obtener los que usan IOS 13 (expresión booleana “app used == IOS 13”). El resultado de esta función es la lista filtrada que contiene elementos que coinciden con la expresión booleana (ejemplo: usuario de aplicación 1, usuario de aplicación 34, usuario de aplicación 432).

En una actividad de condición de Data Source puede comprobar si el resultado de la función all es nulo o no. También puede combinar esta función all con otras funciones como count. Para obtener más información, consulte Actividad de la condición de Data Source.

Ejemplos de código que utilizan la carga útil de LobbyBeacon:

Los ejemplos siguientes utilizan la carga útil de evento que se muestra en la parte superior de esta página.

CAUTION
No se admite el uso de eventos de experiencia en expresiones/condiciones de recorrido. Si su caso de uso requiere el uso de eventos de experiencia, considere métodos alternativos. Más información

Ejemplo 1

Queremos comprobar si un usuario ha instalado una versión específica de una aplicación. Para esto, obtenemos todos los tokens de notificaciones push asociados con aplicaciones móviles para las que la versión es 1.0. A continuación, realizamos una condición con la función count para comprobar que la lista devuelta de tokens contiene al menos un elemento.

count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0

El resultado es true.

Ejemplo 2

Aquí utilizamos la función count para comprobar si hay tokens de notificación push en la colección.

count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

El resultado es true.

count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

El resultado de la expresión es 3.

NOTE
  • Cuando la condición de filtrado de la función all() esté vacía, el filtro devolverá todos los elementos de la lista. Sin embargo, para contar el número de elementos de una colección, no se requiere la función all.

  • currentEventField solo está disponible al manipular colecciones de eventos, currentDataPackField al manipular colecciones de orígenes de datos y currentActionField al manipular colecciones de respuestas de acciones personalizadas.

Al procesar colecciones con all, first y last, realizamos un bucle en cada elemento de la colección uno por uno. currentEventField, currentDataPackField y currentActionField corresponden al elemento que se está reproduciendo en bucle.

Funciones first(<condition>) y last(<condition>)

Las funciones first y last también habilitan la definición de un filtro en la colección al devolver el primer/último elemento de la lista que cumple con el filtro.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Ejemplo 1

Esta expresión devuelve el primer token de notificación push asociado a aplicaciones móviles para las que la versión es 1.0.

@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token}

El resultado es token_1.

Ejemplo 2

Esta expresión devuelve el último token de notificación push asociado a aplicaciones móviles para las que la versión es 1.0.

@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last(currentEventField.application.version == "1.0").token}

El resultado es token_2.

Función at(<index>)

La función at le permite hacer referencia a un elemento específico de una colección según un índice.
El índice 0 es el primer índice de la colección.

<listExpression>.at(<index>)

Ejemplo

Esta expresión devuelve el segundo token de notificación push de la lista.

@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}

El resultado es token_2.

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page documents the all(), first(), last(), and at() collection management functions used in the Journey advanced expression editor, illustrated with push notification token payload examples.

Intents:

  • Filter a collection of event or data source fields using a boolean condition with all(<condition>)
  • Count filtered or unfiltered collection elements using count() combined with collection functions
  • Retrieve the first or last matching element of a collection using first() or last()
  • Access a collection element at a specific zero-based index using at(<index>)
  • Understand which loop variable (currentEventField, currentDataPackField, currentActionField) applies to each collection context

Glossary:

  • all(condition): Filters a collection and returns all items matching the given boolean expression (product-specific)
  • first(condition): Returns the first (most recent for experience events) element in a collection matching the condition (product-specific)
  • last(condition): Returns the last (oldest for experience events) element in a collection matching the condition (product-specific)
  • at(index): Returns the element at the specified zero-based index of a collection (product-specific)
  • currentEventField: Loop variable available only when iterating over event collections (product-specific)
  • currentDataPackField: Loop variable available only when iterating over data source collections (product-specific)
  • currentActionField: Loop variable available only when iterating over custom action response collections (product-specific)

Guardrails:

  • Using experience events in journey expressions/conditions is not supported; consider alternative methods such as computed attributes
  • currentEventField, currentDataPackField, and currentActionField are only available inside their respective collection contexts
  • The all function is not required to count collection elements — count() can be applied directly to the field path
  • When all() is called with an empty condition, all elements in the collection are returned

Terminology:

  • Canonical name: Collection Management Functions — Acronym: none — variants: collection functions, query collection functions
  • Synonyms: “all()” = “collection filter function”; “at()” = “index accessor”
  • Do not confuse: first() (most recent experience event) ≠ first inserted element in general lists

FAQ:

  • Q: What is the difference between all() with an empty condition and all() with a condition? — An empty all() returns every element; a condition-based all() returns only elements matching that boolean expression.
  • Q: How do I count push notification tokens without using all()? — Call count() directly on the token field path, e.g. count(@event{LobbyBeacon...pushNotificationTokens.token}).
  • Q: Which variable do I use to reference the current element when looping over a data source collection? — Use currentDataPackField inside all(), first(), or last() on data source collections.
  • Q: How do I get the second item in a collection? — Use at(1) because index 0 is the first element.
  • Q: Why does last() return the oldest experience event? — Experience events are stored in reverse chronological order, so the last position in the collection corresponds to the oldest event.
recommendation-more-help
journey-optimizer-help