gremlin - 在 Gremlin 中,如何查询一个属性值大于另一个属性值的顶点?

标签 gremlin tinkerpop3

我确定这很简单,但我不知道该怎么做。我有带有特定标签的顶点,它们具有两个整数属性。我们称它们为 integer1 和 integer2。我只想查询 integer2 大于 integer1 的所有顶点。

我尝试了以下方法:

g.V().hasLabel("myLabel").has("integer2", P.gt(values("integer1"))).toList(); 

但这会导致异常 - 可以理解,因为“值”方法调用导致遍历步骤,其中谓词需要一个数字。
Exception in thread "main" java.lang.ClassCastException: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal cannot be cast to java.lang.Integer
    at java.lang.Integer.compareTo(Integer.java:52)
    at org.apache.tinkerpop.gremlin.process.traversal.Compare$3.test(Compare.java:92)
    at org.apache.tinkerpop.gremlin.process.traversal.P.test(P.java:72)
    at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.testValue(HasContainer.java:118)
    at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.test(HasContainer.java:94)
    at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.testAll(HasContainer.java:180)
    at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.iteratorList(TinkerGraphStep.java:116)
    at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.vertices(TinkerGraphStep.java:88)
    at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.lambda$new$0(TinkerGraphStep.java:59)
    at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep$$Lambda$23/1123629720.get(Unknown Source)
...

任何帮助将不胜感激。谢谢。

最佳答案

一种方法是使用 where()条款。首先,为了演示,我修改了“现代”图以包含一个带有整数值的“k”属性:

g = TinkerFactory.createModern().traversal()
g.V().hasLabel('person').property('k',30) 

进而:
gremlin> g.V().hasLabel('person').as('a').
......1>   where('a', gt('a')).by('age').by('k').
......2>   valueMap('age','k')
==>[k:[30],age:[32]]
==>[k:[30],age:[35]]

关于gremlin - 在 Gremlin 中,如何查询一个属性值大于另一个属性值的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55066209/

相关文章:

java - 有没有更好的方法来为图数据库建模我的实体和关系(使用 gremlin)?

cassandra - Gremlin 服务器 Cassandra

java - 如何在java环境中打印Tinkerpop(TinkerGraph)查询的输出?

java - 分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

c# - ExRam Gremlinq 无法与 Cosmos DB 配合使用

java - 如何在 Titan Graph 数据库中使用 Java API 在新顶点和现有顶点之间创建边

sparql - 是否可以将图形查询(Gremlin 或 SPARQL)的输出可视化为 Amazon Neptune 中的节点和边?

java - AWS Neptune io.netty.handler.codec.CorruptedFrameException

gremlin - 如何在 gremlin-javascript 中不区分大小写地查询

c# - Azure Cosmos 数据库引发套接字异常