数组、列表和集合函数

Profile Query Language (PQL)提供了一些功能,使与数组、列表和字符串的交互更容易。 有关其他PQL函数的详细信息,请参阅Profile Query Language 概述

In

in函数用于确定一个项是数组的成员,还是作为布尔值列表的成员。

格式

{VALUE} in {ARRAY}

示例

以下PQL查询定义3月、6月或9月生日的用户。

person.birthMonth in [3, 6, 9]

Not in

notIn函数用于确定一个项是否不是作为布尔值的数组或列表的成员。

NOTE
notIn函数​ ​确保这两个值都不等于null。 因此,结果不是in函数的完全否定。

格式

{VALUE} notIn {ARRAY}

示例

以下PQL查询定义生日不在3月、6月或9月的人员。

person.birthMonth notIn [3, 6, 9]

Intersects

intersects函数用于确定两个数组或列表是否至少有一个公共成员作为布尔值。

格式

{ARRAY}.intersects({ARRAY})

示例

以下PQL查询定义其最喜爱的颜色至少包括红色、蓝色或绿色之一的人员。

person.favoriteColors.intersects(["red", "blue", "green"])

交集

intersection函数用于确定两个数组或列表作为列表的公用成员。

格式

{ARRAY}.intersection({ARRAY})

示例

以下PQL查询定义人员1和人员2是否同时具有最喜爱的红色、蓝色和绿色颜色。

person1.favoriteColors.intersection(person2.favoriteColors) = ["red", "blue", "green"]

Subset of

subsetOf函数用于确定一个特定数组(数组A)是否是另一个数组(数组B)的子集。 换句话说,数组A中的所有元素都是数组B的元素作为布尔值。

格式

{ARRAY}.subsetOf({ARRAY})

示例

以下PQL查询定义访问过其所有最喜爱城市的人。

person.favoriteCities.subsetOf(person.visitedCities)

Superset of

supersetOf函数用于确定一个特定数组(数组A)是否是另一个数组(数组B)的超集。 换句话说,该数组A包含数组B中的所有元素作为布尔值。

格式

{ARRAY}.supersetOf({ARRAY})

示例

以下PQL查询定义了至少吃过一次寿司和比萨的人。

person.eatenFoods.supersetOf(["sushi", "pizza"])

Includes

includes函数用于确定一个数组或列表是否包含作为布尔值的给定项。

格式

{ARRAY}.includes({ITEM})

示例

以下PQL查询定义其最喜爱的颜色包括红色的人员。

person.favoriteColors.includes("red")

Distinct

distinct函数用于从数组或作为数组的列表中删除重复的值。

格式

{ARRAY}.distinct()

示例

以下PQL查询指定在多个商店下订单的人员。

person.orders.storeId.distinct().count() > 1

分组依据

groupBy函数用于根据表达式的值将数组或列表的值分区为组,作为从分组表达式的唯一值到作为数组表达式值分区的数组的映射。

格式

{ARRAY}.groupBy({EXPRESSION})
参数
描述
{ARRAY}
要分组的数组或列表。
{EXPRESSION}
映射返回的数组或列表中的每个项的表达式。

示例

以下PQL查询将存储下订单所依据的所有订单分组。

xEvent[type="order"].groupBy(storeId)

筛选条件

filter函数用于根据作为数组或列表的表达式筛选数组或列表,具体取决于输入。

格式

{ARRAY}.filter({EXPRESSION})
参数
描述
{ARRAY}
要过滤的数组或列表。
{EXPRESSION}
作为筛选依据的表达式。

示例

以下PQL查询定义了21岁或以上的所有人员。

person.filter(age >= 21)

地图

map函数用于将表达式作为数组应用于给定数组中的每个项,从而创建新数组。

格式

array.map(expression)

示例

以下PQL查询创建一个新的数字数组,并平方原始数字的值。

numbers.map(square)

数组中的前n first-n

topN函数用于返回数组中的前N项(当根据给定的数值表达式作为数组按升序排序时)。

格式

{ARRAY}.topN({VALUE}, {AMOUNT})
参数
描述
{ARRAY}
要排序的数组或列表。
{VALUE}
要对数组或列表进行排序的属性。
{AMOUNT}
要返回的项目数。

示例

以下PQL查询返回具有最高价格的前5个订单。

orders.topN(price, 5)

数组中的最后n

bottomN函数用于返回数组中的最后N项(当根据给定的数值表达式作为数组按升序排序时)。

格式

{ARRAY}.bottomN({VALUE}, {AMOUNT})
参数
描述
{ARRAY}
要排序的数组或列表。
{VALUE}
要对数组或列表进行排序的属性。
{AMOUNT}
要返回的项目数。

示例

以下PQL查询返回价格最低的前五位订单。

orders.bottomN(price, 5)

First item

head函数用于将数组或列表中的第一个项作为对象返回。

格式

{ARRAY}.head()

示例

以下PQL查询返回价格最高的前五位订单中的第一位。 有关topN函数的更多信息,请参见数组中的第一个n

orders.topN(price, 5).head()

后续步骤

现在您已了解数组、列表和设置函数,可以在PQL查询中使用它们。 有关其他PQL功能的更多信息,请阅读Profile Query Language概述

recommendation-more-help
770bc05d-534a-48a7-9f07-017ec1e14871