Gremlin:将边添加到多个顶点

问题描述 投票:0回答:1

我有顶点[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)
gremlin tinkerpop3
1个回答
1
投票

from()调制器接受两件事:

  1. 步骤标签或
  2. 遍历

单个顶点或顶点列表可以通过将其包装在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')
© www.soinside.com 2019 - 2024. All rights reserved.