我有顶点[song1, song2, song3, user]
。
我想从listened
添加边缘user
到歌曲。
我有以下内容:
g.V().is(within(song1, song2, song3)).addE('listened').from(user)
但是我收到以下错误:
没有方法签名:org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.from()适用于参数类型:(org.janusgraph.graphdb.vertices.CacheVertex)值:[v [4344] ]可能的解决方案:sort(),drop(int),sum(),find(),grep(),sort(groovy.lang.Closure)
当然,我可以一次迭代一次,但单个查询会很好:
user.addEdge('listened', song1)
user.addEdge('listened', song2)
user.addEdge('listened', song3)
from()
调制器接受两件事:
单个顶点或顶点列表可以通过将其包装在V()
中轻松转换为遍历。另外,请注意g.V().is(within(...))
很可能最终会对所有顶点进行全扫描;它几乎取决于提供程序的实现,但您应该更喜欢使用g.V(<list of vertices>)
。因此,您的遍历应该更像是以下任何一种:
g.V().is(within(song1, song2, song3)).
addE('listened').from(V(user)) // actually bad, as it's potentially a full scan
g.V(song1, song2, song3).
addE('listened').from(V(user))
g.V(user).as('u').
V(within(song1, song2, song3)).
addE('listened').from('u')