假设我有一个包含传递驱动程序列表的哈希值(对于经典flower shop scenario)。每个驱动程序都有一个评级和一个事件信号URL(ESL)。我想只向该列表中的前三名车手举起一个赛事,按排名排序。
使用关系数据库,我会运行如下查询:
SELECT esl FROM driver ORDER BY ranking LIMIT 3;
KRL有没有办法做到这一点?有两个要求:
foreach
迭代次数第二个可以这样解决:
rule reset_counter {
select when rfq delivery_ready
noop();
always {
clear ent:loop_counter;
raise explicit event loop_drivers;
}
}
rule loop_on_drivers {
select when explicit loop_drivers
foreach app:drivers setting (driver)
pre {
esl = driver.pick("$.esl");
}
if (ent:loop_counter < 3) then {
// Signal the driver's ESL
}
always {
ent:loop_counter += 1 from 0;
}
}
但那是一种愚蠢的行为。是否有更多的KRL-ish方法呢?我该如何解决订购问题呢?
编辑:这是app:drivers
数组的格式,以使问题更容易回答:
[
{
"id": "1",
"rating": "5",
"esl": "http://example.com/esl"
},
{
"id": "2",
"rating": "3",
"esl": "http://example.com/esl2"
}
]
答案 0 :(得分:2)
如果不知道哈希的形式,就不可能给你一个特定的答案,但你可以使用sort运算符进行排序,然后使用pick运算符或hash
像
这样的东西driver_data.sort(函数(){...})挑( “$ ..东西[:2]”)。
“something”是相关字段的哈希名称。