Funktionen zur Verwaltung von Sammlungen collection-management-functions

Informationen zu Funktionen zum Abfragen von Sammlungen

Die Ausdruckssprache bietet auch eine Reihe von Funktionen zum Abfragen von Sammlungen. Diese Funktionen werden nachfolgend erläutert.

In den folgenden Beispielen verwenden wir ein Ereignis mit dem Namen „LobbyBeacon“, das eine Sammlung von Push-Benachrichtigungs-Token enthält. Die Beispiele auf dieser Seite verwenden die unten dargestellte Payload-Struktur für Ereignisse:

                {
   "_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
In den folgenden Beispielen wird diese Payload mit @event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens} referenziert, wobei „LobbyBeacon“ der Ereignisname ist und der Rest des Pfads der oben gezeigten Struktur entspricht.

Die Funktion „all(<condition>)“

Die Funktion all ermöglicht mithilfe eines booleschen Ausdrucks die Definition eines Filters für eine bestimmte Sammlung.

<listExpression>.all(<condition>)

Kontextbeispiel: Sie können alle App-Benutzenden abrufen, die iOS 13 verwenden (boolescher Ausdruck „app used == iOS 13“). Das Ergebnis dieser Funktion ist die gefilterte Liste mit Elementen, die dem booleschen Ausdruck entsprechen (Beispiel: App-Anwender 1, App-Anwender 34, App-Anwender 432).

In einer Aktivität des Typs „Bedingung der Datenquelle“ können Sie überprüfen, ob das Ergebnis der Funktion all null ist. Sie können die Funktion all auch mit anderen Funktionen wie count kombinieren. Weitere Informationen finden Sie unter Aktivität „Bedingung der Datenquelle“.

Code-Beispiele, die die LobbyBeacon-Payload verwenden:

Die folgenden Beispiele verwenden die Ereignis-Payload, die oben auf dieser Seite angezeigt wird.

CAUTION
Die Verwendung von Erlebnisereignissen in Journey-Ausdrücken/-Bedingungen wird nicht unterstützt. Wenn Ihr Anwendungsfall die Verwendung von Erlebnisereignissen erfordert, sollten Sie alternative Methoden in Betracht ziehen. Weitere Informationen

Beispiel 1

Wir möchten überprüfen, ob ein Anwender eine bestimmte Version einer App installiert hat. Zu diesem Zweck rufen wir alle Push-Benachrichtigungs-Token für Apps mit der Version 1.0 ab. Anschließend führen wir eine Bedingung mit der Funktion count aus, um zu überprüfen, ob die zurückgegebene Liste von Token mindestens ein Element enthält.

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

Das Ergebnis ist wahr.

Beispiel 2

Hier verwenden wir die Funktion count, um zu überprüfen, ob in der Sammlung Push-Benachrichtigungs-Token vorhanden sind.

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

Das Ergebnis ist wahr.

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

Das Ergebnis des Ausdrucks ist 3.

NOTE
  • Wenn die Filterbedingung in der Funktion all() leer ist, gibt der Filter alle Elemente in der Liste zurück. Um jedoch die Anzahl der Elemente einer Sammlung zu zählen, ist die Funktion „all“ nicht erforderlich.

  • currentEventField ist nur bei der Bearbeitung von Ereignissammlungen verfügbar, currentDataPackField bei der Bearbeitung von Datenquellensammlungen und currentActionField bei der Bearbeitung von benutzerdefinierten Aktionsantwortsammlungen.

Bei der Verarbeitung von Sammlungen mit all, first und last wird nacheinander eine Schleife um jedes Element der Sammlung gebildet. currentEventField, currentDataPackField und currentActionField entsprechen dem Element, um das die Schleife gebildet wird.

Die Funktionen „first(<condition>)“ und „last(<condition>)“

Die Funktionen first und last ermöglichen auch die Definition eines Filters für die Sammlung, wobei das erste/letzte Element der Liste zurückgegeben wird, das dem Filter entspricht.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Beispiel 1

Dieser Ausdruck gibt das erste Push-Benachrichtigungs-Token zurück, das mit Apps verknüpft ist, deren Version 1.0 ist.

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

Das Ergebnis ist token_1.

Beispiel 2

Dieser Ausdruck gibt das letzte Push-Benachrichtigungs-Token zurück, das mit Apps verknüpft ist, deren Version 1.0 ist.

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

Das Ergebnis ist token_2.

Die Funktion „at(<index>)“

Mit der Funktion at können Sie anhand eines Index auf ein bestimmtes Element in einer Sammlung verweisen.
Der Index „0“ ist der erste Index der Sammlung.

<listExpression>.at(<index>)

Beispiel

Dieser Ausdruck gibt das zweite Push-Benachrichtigungs-Token der Liste zurück.

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

Das Ergebnis ist 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