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

如何在Gremlin/Neptune中实现基于边方向的条件排序?

按边的入/出顶点条件排序关联边解决方案

你的查询失效核心原因是**values()与choose()的逻辑组合错误**:你用choose返回了属性名称字符串,但values()无法通过字符串动态获取属性值,得把属性值的获取逻辑直接放到choose分支里。

正确的Gremlin查询语句

g.V('id123').bothE()
  .order()
    .by(choose(inV().is(V('id123')), values('origin_pinned'), values('target_pinned')), desc)

逻辑说明

  • bothE():获取ID为id123的顶点的所有入边和出边
  • choose(inV().is(V('id123')), ...):判断当前边的入顶点是否是目标顶点id123:
    • 若是入边(目标顶点是这条边的终点),则用origin_pinned属性值排序
    • 若是出边(目标顶点是这条边的起点),则用target_pinned属性值排序
  • desc:指定按属性值降序排列

可选优化(处理空属性值)

如果部分边可能缺失对应属性,可通过coalesce设置默认值避免排序异常:

g.V('id123').bothE()
  .order()
    .by(choose(inV().is(V('id123')), 
              coalesce(values('origin_pinned'), constant(0)), 
              coalesce(values('target_pinned'), constant(0))), desc)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:10:37