首页 > 解决方案 > gremlin 将字符串属性转换为数字属性

问题描述

目前我有一个带有时间戳作为字符串属性的图表

g.V().order().by('timestamp', '10')

这会导致排序时出现问题,因为字符串排序与数字排序不同。

String sorting  : 1, 10, 2
Numeric sorting : 1, 2, 10

有没有办法将所有时间戳属性转换为 gremlin 中的 Long(Numeric) 或如何查询 gremlin 以使用数字排序。开放供建议。

如果我将 Order.desc 与时间戳属性一起使用,则会引发空指针异常,但 Order.decr 工作正常。任何想法?提前致谢。

标签: javagremlintinkerpop3amazon-neptune

解决方案


如果要将所有字符串转换为整数,最简单的方法是在应用程序中按照以下方式进行:

  1. 使用 Gremlin 获取属性
  2. 在您的应用程序中将其转换为整数
  3. 使用 Gremlin 将值写回并替换之前的值(务必使用 Cardinality.single 关键字)。

另一种方法是将您的图表导出为 CSV,更新 CSV 并重新加载它。根据图表的大小,这可能是一个更好的选择。

另一种方法是使用内联代码 (lambdas),但如果您使用的是 Amazon Neptune,那么这不是一个选项,因为它们是不允许的。

至于 Oder.decr 和 Order.desc 两者都应该可以工作,除非您的 Neptune 引擎版本或 Gremlin Client 版本已经落后了很长一段时间。


推荐阅读