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

OrientDB:基于关联顶点RID与边属性创建映射查询

解决OrientDB中组合关联顶点RID与边属性为映射的问题

我之前也碰到过一模一样的需求,OrientDB的MAP()函数刚好能帮你把两个列表对应成键值对的映射。直接给你可行的查询方案,再拆解细节:

SELECT 
  *,
  MAP(connectedRids, connectedNames) AS connected
FROM (
  SELECT 
    *,
    OUT('E1','E2').@rid AS connectedRids,
    OUT('E1','E2').name AS connectedNames
  FROM A
  WHERE @rid = #A:A1 -- 替换成你的A1实际RID
)

关键逻辑解释:

  • 内层查询:先获取A1的所有属性,同时通过OUT('E1','E2')分别取出关联顶点的RID列表(connectedRids)和对应边的name属性列表(connectedNames)——这部分你已经能实现,对吧?
  • 外层查询:用MAP()函数把两个列表按位置一一绑定,生成键为RID、值为边name的映射,命名为connected,同时保留A1的所有原始属性。

如果你的边是双向关联(需要用IN或BOTH方向),只需要把内层的OUT换成对应的方向即可,MAP()函数的对应逻辑完全通用。

要是想更简洁,也可以不用子查询,直接内联写法:

SELECT 
  *,
  MAP(OUT('E1','E2').@rid, OUT('E1','E2').name) AS connected
FROM A
WHERE @rid = #A:A1

这个写法和上面效果完全一致,只是把两次OUT查询合并到MAP()参数里,OrientDB会自动处理列表的对应关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 08:53:15