Fonctions de gestion des collections collection-management-functions
À propos des fonctions d’interrogation de collections
Le langage d’expression s’accompagne également d’un ensemble de fonctions permettant d’interroger les collections. Ces fonctions sont expliquées ci-dessous.
Dans les exemples suivants, nous utilisons un événement nommé « LobbyBeacon » contenant une collection de jetons de notification push. Les exemples de cette page utilisent la structure de payload d’événement illustrée ci-dessous :
{
"_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"
}
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens} où « LobbyBeacon » est le nom de l’événement et le reste du chemin d’accès correspond à la structure affichée ci-dessus.La fonction all(<condition>)
La fonction all permet de définir un filtre sur une collection donnée en utilisant une expression booléenne.
<listExpression>.all(<condition>)
Exemple conceptuel : parmi toutes les personnes utilisant l’application, vous pouvez extraire celles qui utilisent IOS 13 (expression booléenne « app used == IOS 13 »). Le résultat de cette fonction est une liste filtrée contenant les éléments qui correspondent à l’expression booléenne (exemple : utilisateur 1 de l’application, utilisateur 34 de l’application, utilisateur 432 de l’application).
Dans une activité Condition de source de données, vous pouvez vérifier si le résultat de la fonction all est nul ou non. Vous pouvez également combiner cette fonction all à d’autres fonctions, telles que count. Pour plus d’informations, voir Activité Condition de source de données.
Exemples de code utilisant la payload LobbyBeacon :
Les exemples ci-dessous utilisent la payload d’événement affichée en haut de cette page.
Exemple 1
Nous voulons vérifier si un utilisateur ou une utilisatrice a installé une version spécifique d’une application. Pour ce faire, nous récupérons tous les jetons de notification push associés aux applications mobiles dont la version est 1.0. Ensuite, nous exécutons une condition avec la fonction count pour vérifier que la liste de jetons renvoyée contient au moins un élément.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0
Le résultat est true.
Exemple 2
Ici, nous utilisons la fonction count pour vérifier s’il existe des jetons de notification push dans la collection.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0
Le résultat est true.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})
Le résultat de l’expression est 3.
-
Lorsque la condition de filtrage de la fonction all() est vide, le filtre renvoie tous les éléments de la liste. Cependant, pour comptabiliser le nombre d’éléments d’une collection, la fonction all n’est pas obligatoire.
-
currentEventFieldn’est disponible que lors de la manipulation de collections d’événements,currentDataPackFieldlors de la manipulation de collections de sources de données etcurrentActionFieldlors de la manipulation de collections de réponses d’actions personnalisées.
all, first et last, une boucle est exécutée sur chaque élément de la collection, un par un. currentEventField, currentDataPackField et currentActionField correspondent à l’élément exécuté en boucle.Fonctions first(<condition>) et last(<condition>)
Les fonctions first et last activent également la définition d’un filtre sur la collection, tout en renvoyant le premier/dernier élément de la liste qui correspond au filtre.
<listExpression>.first(<condition>)
<listExpression>.last(<condition>)
Exemple 1
Cette expression renvoie le premier jeton de notification push associé aux applications mobiles dont la version est égale à 1.0.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token}
Le résultat est token_1.
Exemple 2
Cette expression renvoie le dernier jeton de notification push associé aux applications mobiles dont la version est égale à 1.0.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last(currentEventField.application.version == "1.0").token}
Le résultat est token_2.
La fonction at(<index>)
La fonction at vous permet de référencer un élément spécifique d’une collection conformément à un index.
L’index 0 est le premier de la collection.
<listExpression>.at(<index>)
Exemple
Cette expression renvoie le deuxième jeton de notification push de la liste.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}
Le résultat est token_2.
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(), andat()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()orlast() - 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, andcurrentActionFieldare only available inside their respective collection contexts- The
allfunction 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 andall()with a condition? — An emptyall()returns every element; a condition-basedall()returns only elements matching that boolean expression. - Q: How do I count push notification tokens without using
all()? — Callcount()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
currentDataPackFieldinsideall(),first(), orlast()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.