当前位置: 首页 > 知识库问答 >
问题:

用Java/Scala实现远程Gremlin服务器图突变

谷梁宝
2023-03-14

我试图使用遍历在远程Gremlin服务器上获得修改顶点,但似乎只有在创建顶点的遍历中我才能添加属性,当开始新的遍历时,我不会添加属性。

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")
v1.property("age","27")
: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]]

共有1个答案

宗政霄
2023-03-14

我不确定您使用的是什么图实现,但这对我来说是适用的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将只是一个遍历实例,您将获得遍历ID(),而不是顶点。所以我想这应该能解决你的问题。

请注意,v1.property(“age”,“27”)由于您所解释的原因不能工作--顶点是“分离的”,您不能直接使用它,除非将它传递回另一个遍历。您也应该能够在大多数图上做到这一点:

gremlin> g.V(v).property('favorite','red')
==>v[0]

不引用ID()

 类似资料:
  • 我正在开发一个SMS应用程序,并在其中使用JMS。下面是一个简单的图表,显示了我将如何实现该应用程序: 所以基本上,最终用户通过主服务器发送SMS消息。主服务器将消息重定向到JMS服务器。JMS服务器接收消息并将其放入队列以立即或稍后处理。 我有几个关于设计的问题,关于实现JMS的正确方法是什么: 将ConnectionFactory放置在JMS服务器上是正确的,还是应该将其移动到主服务器上?或者

  • 本文向大家介绍mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法,包括了mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法的使用技巧和注意事项,需要的朋友参考一下 本文将介绍如何使用公司运行服务器进行开发调试,以及使用远程服务器python解释器,整理了对应的配置流程。 进入配置页面 Pycharm菜单栏,如下图所示,依次点击

  • 本文向大家介绍Pycharm连接远程服务器过程图解,包括了Pycharm连接远程服务器过程图解的使用技巧和注意事项,需要的朋友参考一下 除了使用xshell等连接服务器以外,pycharm也可以连接服务器,在服务器上运行代码,上传下载文件等操作。 步骤如下:1、pycharm工具栏:Tools-->Deployment-->Configuration 2、左上角:点击+加号-->SFTP(最好选择

  • 主要内容:1.概述,2.ExchangeHandler,3. Codec1.概述 本文涉及类图如下: 2.ExchangeHandler 在 DubboProtocol 中,实现了 ExchangeHandler ,代码如下: 3. Codec 实现 Codec2 接口,支持多消息的编解码器。 3.1 DubboCountCodec 3.2 DubboCodec 实现 Codec2 接口,继承 ExchangeCodec 类,Dubbo 编解码器实现类。 构造方法 3

  • 本文向大家介绍java 实现微信服务器下载图片到自己服务器,包括了java 实现微信服务器下载图片到自己服务器的使用技巧和注意事项,需要的朋友参考一下  java 实现微信服务器下载图片到自己服务器           此功能的实现需要注意java 中IO流的操作及网路开发,           实现代码: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 我正在试图了解远程服务器返回错误的原因:(409)冲突 我通过获取租约、附加文本和打破租约来给AppendBlob写行,就像这样。错误只是偶尔发生,所以我很好奇什么情况会导致它发生。我的怀疑是,如果多个用户命中该代码执行的endpoint,并且以某种方式同时调用获取租赁,可能会发生一些事情。 失败的方法是Microsoft。WindowsAzure.存储。共享。协议。http://http://P