Funktioner för att hantera samlingar collection-management-functions
Om funktioner för frågesamling
Uttrycksspråket innehåller även en uppsättning funktioner för att fråga efter samlingar. Dessa funktioner förklaras nedan.
I följande exempel använder vi händelsens nyttolast som innehåller en samling:
{
"_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"
}
Funktionen all(<condition>
)
Funktionen all aktiverar definitionen av ett filter för en given samling genom att använda ett booleskt uttryck.
<listExpression>.all(<condition>)
Bland alla appanvändare kan du till exempel hämta de som använder IOS 13 (booleskt uttryck "app used == IOS 13"). Resultatet av den här funktionen är den filtrerade lista som innehåller objekt som matchar det booleska uttrycket (exempel: appanvändare 1, appanvändare 34, appanvändare 432).
I en Data Source Condition-aktivitet kan du kontrollera om resultatet av all-funktionen är null eller inte. Du kan också kombinera den här all-funktionen med andra funktioner som count. Mer information finns i Datavillkorsaktivitet för Source.
Exempel 1
Vi vill kontrollera om en användare har installerat en specifik version av ett program. För detta får vi alla push-meddelandetoken som är associerade med mobilprogram som har version 1.0. Sedan utför vi ett villkor med funktionen count för att kontrollera att den returnerade tokenlistan innehåller minst ett element.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0
Resultatet är sant.
Exempel 2
Här använder vi funktionen count för att kontrollera om det finns push-meddelandetoken i samlingen.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0
Resultatet är sant.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})
Resultatet av uttrycket är 3.
-
När filtervillkoret i funktionen all() är tomt returnerar filtret alla element i listan. **För att antalet element i en samling ska kunna räknas krävs dock inte funktionen all.
-
currentEventField
är bara tillgängligt när du hanterar händelsesamlingar,currentDataPackField
när du ändrar datakällsamlingar ochcurrentActionField
när du ändrar anpassade åtgärdssvarssamlingar.När vi bearbetar samlingar med
all
,first
ochlast
slingor för varje element i samlingen ett i taget.currentEventField
,currentDataPackField
ochcurrentActionField
motsvarar elementet som upprepas.
Funktionerna first(<condition>
) och last(<condition>
)
Funktionerna first och last aktiverar även definitionen av ett filter i samlingen när det första/sista elementet i listan som uppfyller filtret returneras.
<listExpression>.first(<condition>)
<listExpression>.last(<condition>)
Exempel 1
Det här uttrycket returnerar den första push-meddelandetoken som är associerad med mobilprogram som versionen är 1.0 för.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token}
Resultatet är token_1
.
Exempel 2
Det här uttrycket returnerar den senaste push-meddelandetoken som är associerad med mobilprogram för vilka versionen är 1.0.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last(currentEventField.application.version == "1.0").token}
Resultatet är token_2
.
Funktionen at(<index>
)
Med funktionen at kan du referera till ett specifikt element i en samling enligt ett index.
Index 0 är samlingens första index.
<listExpression>
.at(<index>
)
Exempel
Det här uttrycket returnerar listans andra push-meddelandetoken.
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}`
Resultatet är token_2
.