Funzioni di gestione delle raccolte collection-management-functions

Informazioni sulle funzioni di raccolta query

Il linguaggio delle espressioni introduce anche un set di funzioni per le raccolte di query. Queste funzioni sono descritte di seguito.

Negli esempi seguenti, utilizziamo un evento denominato “LobbyBeacon” contenente una raccolta di token di notifica push. Gli esempi in questa pagina utilizzano la struttura del payload dell’evento mostrata di seguito:

                {
   "_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
Negli esempi seguenti, si fa riferimento a questo payload utilizzando @event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens}, dove "LobbyBeacon" è il nome dell'evento e il resto del percorso corrisponde alla struttura mostrata sopra.

La funzione all(<condition>)

La funzione all abilita la definizione di un filtro per una determinata raccolta utilizzando un’espressione booleana.

<listExpression>.all(<condition>)

Esempio concettuale: tra tutti gli utenti dell’app, puoi ottenere quelli che usano IOS 13 (espressione booleana “app used == IOS 13”). Il risultato di questa funzione è l’elenco filtrato contenente gli elementi che corrispondono all’espressione booleana (ad esempio: utente app 1, utente app 34, utente app 432).

In un’attività Condizione Data Source è possibile verificare se il risultato della funzione all è nullo o meno. È inoltre possibile combinare questa funzione all con altre funzioni quali count. Per ulteriori informazioni, vedere Attività condizione Data Source.

Esempi di codice con il payload LobbyBeacon:

Gli esempi seguenti utilizzano il payload dell’evento mostrato nella parte superiore di questa pagina.

CAUTION
L’utilizzo di eventi di esperienza nelle espressioni/condizioni di percorso non è supportato. Se il caso d’uso richiede l’utilizzo di eventi esperienza, considera metodi alternativi. Ulteriori informazioni

Esempio 1

Vogliamo verificare se un utente ha installato una versione specifica di un’applicazione. Per questo otteniamo tutti i token di notifica push associati alle applicazioni mobili per le quali la versione è 1.0. Quindi eseguiamo una condizione con la funzione count per verificare che l’elenco di token restituito contenga almeno un elemento.

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

Il risultato è vero.

Esempio 2

In questo caso, usiamo la funzione count per verificare se la raccolta contiene token di notifica push.

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

Il risultato è vero.

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

Il risultato dell’espressione è 3.

NOTE
  • Quando la condizione di filtro nella funzione all() è vuota, il filtro restituirà tutti gli elementi dell'elenco. Tuttavia, per contare il numero di elementi di una raccolta, la funzione all non è obbligatoria.

  • currentEventField è disponibile solo quando si manipolano le raccolte eventi, currentDataPackField quando si manipolano le raccolte origini dati e currentActionField quando si manipolano le raccolte di risposte di azioni personalizzate.

Durante l'elaborazione delle raccolte con all, first e last, viene eseguito un ciclo su ogni elemento della raccolta uno alla volta. currentEventField, currentDataPackField e currentActionField corrispondono all'elemento di cui viene eseguito il ciclo.

La prima(<condition>) e l’ultima(<condition>) funzioni

Le funzioni first e last abilitano inoltre la definizione di un filtro nella raccolta restituendo il primo/ultimo elemento dell’elenco che soddisfa il filtro.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Esempio 1

Questa espressione restituisce il primo token di notifica push associato alle applicazioni mobili la cui versione è 1.0.

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

Risultato: token_1.

Esempio 2

Questa espressione restituisce l’ultimo token di notifica push associato alle applicazioni mobili la cui versione è 1.0.

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

Risultato: token_2.

Funzione at(<index>)

La funzione at consente di fare riferimento a un elemento specifico di una raccolta in base a un indice.
L’indice 0 è il primo indice della raccolta.

<listExpression>.at(<index>)

Esempio

Questa espressione restituisce il secondo token di notifica push dell’elenco.

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

Risultato: 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