Ami*_* A. 5 gremlin tinkerpop3
我确信这很简单,但我不知道该怎么做。我有带有特定标签的顶点,它们有两个整数属性。我们将它们称为整数 1 和整数 2。我只想查询整数2大于整数1的所有顶点。
我已经尝试过以下方法:
g.V().hasLabel("myLabel").has("integer2", P.gt(values("integer1"))).toList();
Run Code Online (Sandbox Code Playgroud)
但这会导致异常 - 可以理解,因为“值”方法调用会导致遍历步骤,而谓词需要一个数字。
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)
...
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。谢谢。
一种方法是使用子句where()
。首先,为了演示,我修改了“现代”图以包含具有整数值的“k”属性:
g = TinkerFactory.createModern().traversal()
g.V().hasLabel('person').property('k',30)
Run Code Online (Sandbox Code Playgroud)
进而:
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]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4494 次 |
最近记录: |