gremlin - values() 的奇怪行为
问题描述
在 Gremlin 控制台中,我看到以下内容:
1) 设置
graph = TinkerGraph.open()
g = graph.traversal()
2) 插入
g.addV('mylabel').property(id, 1).property('name', 'myname').next()
3)这很好用:
g.V(1).values('name')
==>myname // as expected
3)这反而会产生意想不到的结果
g.V().sideEffect{println it.get().values('name')}
org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils$3@12a14b74 // expected: "myname"
不it.get()
应该是顶点并且values('name')
是"myname"
?
解决方案
严格说 API 和一步的用法Vertex.values()
,sideEffect()
你得到的正是你所要求的,因为values()
返回了一个Iterator
-see javadocs。您需要改为:
g.V().sideEffect{println it.get().values('name').next()}
或更好(假设“名称”不是多属性):
g.V().sideEffect{println it.get().value('name')}
或者更好的是,避免关闭/ sideEffect()
,只需执行以下操作:
g.V().values('name')
推荐阅读
- r - 闪亮的模块:从外部访问和更改位于模块服务器功能内的反应值?
- compilation - 查找用于 macOS 的预编译或编译 Tcl/Tk 框架
- c# - 更新属性以使加载不会停止 UI 的正确方法?
- azure - 无法从 Azure 容器实例连接到 Azure SQL 数据库
- python - 我如何使用scrapy shell和python登录这个网站 - 401错误?
- c++ - 如何在 C++ 中循环对
- java - Spring Boot 使用多个对象上传多个文件
- android - 从本地数据库Android检索数据的正确方法是什么?
- ios - 反向地理编码解释
- javascript - 从网页中读取动态创建的内容