对于给定的用户,我想获得所有运行的结果
在“用户”表中,每个用户都有一个项目ID列表,而在“运行”表中,每个运行都有一个项目ID。以下是有效的查询。可以使用concatMap对其进行优化吗?
r.table('users')
.inner_join(
r.table('runs').filter( lambda var_6: (<some_condns>),
lambda user, run: user['projects'].contains(run['project_id'])
)
.filter(lambda l: l['left']['id'] == '<user_id>').without('left')
我认为equiJoin可能不起作用,因为我正在寻找与平等相关的列表中的项目。
答案 0 :(得分:0)
以下内容对我来说效果很好-
r.table("users").get_all(user_id).map(lambda user:
{
"run_array": r.table("runs").filter(lambda var_6: (<some_condns>))
.filter(lambda run:
user['projects'].contains(run["project_id"]))
.coerce_to("array")
}).concat_map(lambda run: run['run_array'])