0

我正在尝试获取给定源和目标顶点 id 以及边缘标签的边缘的属性值。

在 gremlin 终端中,以下工作:

g.V("fromNodeId").outE("edgeLabel").where(inV().hasID("toNodeID")).values("edgeProp")

可悲的是,在 groovy 中,无法识别 inV() 和 hasID(),我找不到正确的导入来使其工作。

这是我尝试过的进口产品:

import org.apache.commons.configuration.Configuration;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
import org.apache.tinkerpop.gremlin.process.*
import org.apache.tinkerpop.gremlin.groovy.*
import org.apache.tinkerpop.gremlin.groovy.function.*
import org.apache.tinkerpop.gremlin.groovy.util.*
import org.apache.tinkerpop.gremlin.pipes.filter.*
import org.apache.tinkerpop.gremlin.structure.Edge
import org.apache.tinkerpop.gremlin.structure.Vertex
import org.apache.tinkerpop.gremlin.structure.EdgeTest;
import org.apache.tinkerpop.gremlin.structure.Graph

我会注意到其他查询也可以正常工作:

String getPropValueByID(Long id, String prop){
    def result = []
    **g.V(id).values(prop).fill(result)**
    if(result.empty) return null

    return result.first()
}
4

1 回答 1

2

TinkerPop3 文档中对此进行了描述

为了减少表达式的冗长,最好使用import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*. 这样__.inE(),就可以简单地编写inE(). 使用匿名遍历时请注意特定于语言的保留关键字。例如,in 和 as 是 Groovy 中的保留关键字,因此您必须使用详细语法__.in()__.as()避免冲突。

于 2016-01-07T17:33:18.857 回答