我试图使用遍历在远程Gremlin服务器上获取修改顶点,但似乎只有在创建顶点的遍历中我还可以添加属性,当开始新的遍历时,我不会添加属性。 / p>
Scala / Java群集连接设置代码:
val mapper = GryoMapper.build()
val cluster = Cluster.build().serializer(new GryoMessageSerializerV1d0(mapper)).create
val client = cluster.connect[org.apache.tinkerpop.gremlin.driver.Client.ClusteredClient]()
val graph = EmptyGraph.instance()
val g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))
这有效:
val v1 = g.addV("person").property("name","stephen").next()
这不是:
g.V(v1.id()).property("age","27")
这不会,甚至抛出java.lang.IllegalStateException(propertyAdditionNotSupported),因为顶点是org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex:
v1.property("age","27")
如果我使用Gremlin控制台并远程连接到Gremlin服务器,我会毫无问题地做到这两点。
:remote connect tinkerpop.server conf/remote.yaml
gremlin> :> g.addV('person').property('name','stephen')
==>v[82128]
gremlin> :> g.V(82128).property('age','27')
==>v[82128]
gremlin> :> g.V(82128).valueMap()
==>[name:[stephen],age:[27]]
Java远程实现是否有问题,或者我遗漏了什么?
答案 0 :(得分:2)
我不确定您使用的是哪种Graph实现,但这适用于TinkerGraph:
gremlin> graph = EmptyGraph.instance()
==>emptygraph[empty]
gremlin> cluster = Cluster.open()
==>localhost/127.0.0.1:8182
gremlin> g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> v = g.addV().property('name','stephen').next()
==>v[0]
gremlin> g.V(v.id()).property('favorite','red')
==>v[0]
gremlin> g.V().valueMap()
==>[name:[stephen],favorite:[red]]
我会注意到,在你的情况下,你不要next()
从顶点出来:
val v1 = g.addV("person").property("name","stephen")
我认为即使在Gremlin Scala语法中你也应该这样做:
val v1 = g.addV("person").property("name","stephen").next()
否则v1
将只是Traversal
个实例,您获得id()
的{{1}}而不是Traversal
。所以我认为应该解决你的问题。
请注意Vertex
因您解释的原因不起作用 - 该顶点是"分离的"你不能直接使用它,除非把它传回另一个遍历。您还应该能够在大多数图表上执行此操作:
v1.property("age","27")
没有引用gremlin> g.V(v).property('favorite','red')
==>v[0]
。
答案 1 :(得分:0)
您需要确保iterate the traversal。斯蒂芬的回答提到了这一点。 Gremlin控制台会自动迭代遍历,但您必须自己明确地执行此操作。
iterate()
获得零结果next()
获得一个结果toList()
获得了很多结果本教程也很好地阅读了结果迭代http://tinkerpop.apache.org/docs/current/tutorials/the-gremlin-console/#result-iteration