【发布时间】:2018-06-20 11:36:30
【问题描述】:
总结
我正在编写一个适用于 orientdb 和 neo4j 的 gremlin 脚本。
举个例子,假设我们想用id 1 加载一个顶点
对于 neo4j,我们将 gremlin 脚本编写为
g.V(1) 和 orientDB g.V('#17:0')。
这样我的脚本应该为这两个数据库运行?
【问题讨论】:
标签: orientdb gremlin gremlin-server
总结
我正在编写一个适用于 orientdb 和 neo4j 的 gremlin 脚本。
举个例子,假设我们想用id 1 加载一个顶点
对于 neo4j,我们将 gremlin 脚本编写为
g.V(1) 和 orientDB g.V('#17:0')。
这样我的脚本应该为这两个数据库运行?
【问题讨论】:
标签: orientdb gremlin gremlin-server
您不能拥有独立于供应商的元素标识符,因为大多数图形系统不允许您分配标识符,Neo4j 或 OrientDB 也不允许这样做。无论如何,您可能不应该在代码中硬编码标识符,因为我相信这些标识符可能会根据图形系统在您的下方发生变化。
正确的方法是依赖索引并更喜欢将遍历编写为:
g.V().has('myId', 1234)
在这种情况下,任何图形数据库都可以解决这个问题。如果您确实使用本机图形标识符,我建议您始终将它们视为代码中的变量,如下所示:
Object vid = g.V().has('myId', 1234).id().next()
...
g.V(vid).out().....
【讨论】: