You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rust SDK执行RELATE查询时,能否展开.bind()传递的参数?

问题说明

常规一对多关系实现

创建一对多关系的常规写法可以正常工作,示例代码如下:

let user = Thing::from(UserId(0));
let tracks: Vec<Thing> = vec![Thing::from(TrackId(0)), Thing::from(TrackId(1))];

db.query("RELATE $user->owns->$track")
    .bind(("user", user))
    .bind(("track", tracks))
    .await;

这段代码会在指定用户和每首曲目之间创建关系,生成的记录如下:

user:0->owns->track:0 
user:0->owns->track:1

多用户场景下的问题

当绑定多个用户时,比如:

let users: Vec<Thing> = vec![Thing::from(UserId(0)), Thing::from(UserId(1))];

执行后会生成所有用户与所有曲目之间的关系(笛卡尔积),结果如下:

user:0->owns->track:0 
user:0->owns->track:1
user:1->owns->track:0
user:1->owns->track:1 

期望的结果

我需要的是用户与曲目一一对应创建关系,而非全量匹配,期望生成的记录如下:

user:0->owns->track:0 
user:1->owns->track:1

同时,每个关系还需要附带自定义数据(通过SET语句),比如为每个关系设置特定的购买时间:

RELATE user:0->owns->track:0 SET purchase_date = 2022-07-03T07:18:52Z
RELATE user:1->owns->track:1 SET purchase_date = 2000-01-01T07:18:52Z

需求

目前我可以通过多次调用query方法实现上述效果,但希望能只用一次query调用完成所有关系的创建及数据设置。

内容的提问来源于stack exchange,提问作者sabjorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:22:45