【发布时间】:2018-07-01 07:36:41
【问题描述】:
g.V().hasLabel("OperatingSystem")
.filter(Lambda.predicate("{it.get().property('name').startsWith('xyz')}")).out("dpend_on")
.as("ast").out("depend_on").hasLabel("abc")
导致错误:
java.util.concurrent.CompletionException:
org.apache.tinkerpop.gremlin.driver.exception.ResponseException:查询解析在第 1 行失败,字符位置为 0,错误消息:不匹配的输入 '[' 期望 {''''、'""'、'g'}在 java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
在 java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1934)
在 org.apache.tinkerpop.gremlin.driver.ResultSet.one(ResultSet.java:107)
在 org.apache.tinkerpop.gremlin.driver.ResultSet$1.hasNext(ResultSet.java:159)
在 org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:166)
在 org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:153)
在 org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:142)
在 org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:127)
在 org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal.nextTraverser(DriverRemoteTraversal.java:108)
在 org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep.processNextStart(RemoteStep.java:80)
在 org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:128)
在 org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:38)
在 org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:200)
【问题讨论】:
-
不确定这是否与它有关,但看起来您在 lambda 之后的输出步骤中拼错了“dpend_on”
-
g.V().hasLabel("OperatingSystem") .filter(Lambda.predicate("{it.get().property('name').startsWith('xyz')}")) .count().next();
-
g.V().hasLabel("OperatingSystem") .filter(Lambda.predicate("{it.get().property('name').startsWith('Windows')}")) .count().next();
-
还是不行 :( .
-
您可以使用
between步骤模拟startsWith行为并避免需要lambda。例如has('some_key',between('abc','abd'))