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

Gremlin查询如何让valueMap返回的顶点index属性按数字顺序排列

问题解决方法

你可以通过自定义属性排序逻辑替换原生valueMap的返回规则来实现需求。原生valueMap默认按字典序排列属性键,才会出现index11排在index2之前的问题,你可以修改查询中的by子句,提取属性后按数字后缀排序再构造返回结构,修改后的查询示例如下:

%%gremlin -p v,inE,outV,inE,outV
g.V('city_brand').inE().outV().inE().outV().path().
by(
  // 合并token属性和排序后的index属性返回
  union(
    // 保留id、label等基础token
    project('id', 'label').by(id).by(label),
    // 筛选index开头的属性,按后缀数字排序后构造键值对
    properties().hasKey(TextP.startingWith('index'))
      .order().by(__.key().substring(5).as(Int))
      .group().by(key).by(value())
  ).unfold().group().by(keys).by(values)
)

说明

  • 排序逻辑中截取属性名index后的字符串转为整数排序,完全匹配你需要的index1到index12的正序要求
  • 如果你使用的图数据库禁用了自定义函数,也可以在客户端拿到valueMap的返回结果后,自行提取属性键排序重组,实现成本更低
  • 如果你不需要保留id、label之外的其他非index属性,可以删掉对应的union逻辑,只保留排序后的index属性即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:04