如何在Gremlin中将UUID用作id?

如何在Gremlin中将UUID用作id?,gremlin,tinkerpop,gremlin-server,Gremlin,Tinkerpop,Gremlin Server,我正在添加这样的竖线: g.addV(“foobar”).property(“id”,1).property(…等) 如何使用uuid而不是整数id设置属性?一个“id”可以有多种含义。如果您只是想将UUID用作查找顶点的唯一标识符,那么在与所选图形数据库的基础索引功能结合使用时,可以采用现有的方法。换句话说,只要“id”上有索引然后你会很快找到你的顶点。在这种用法中,“id”显然只是顶点的一个属性,你可能会发现对于某些图形数据库,“id”实际上是一个保留项,不能用作属性键。最好选择不同的键名

我正在添加这样的竖线:

g.addV(“foobar”).property(“id”,1).property(…等)

如何使用uuid而不是整数id设置属性?

一个“id”可以有多种含义。如果您只是想将UUID用作查找顶点的唯一标识符,那么在与所选图形数据库的基础索引功能结合使用时,可以采用现有的方法。换句话说,只要“id”上有索引然后你会很快找到你的顶点。在这种用法中,“id”显然只是顶点的一个属性,你可能会发现对于某些图形数据库,“id”实际上是一个保留项,不能用作属性键。最好选择不同的键名

如果不使用“id”作为属性键,您的意思是希望设置实际的顶点标识符,由
T.id
引用,如中所示:

g.addV(T.id, uuid)
然后,您首先需要使用允许分配标识符的图形数据库实现。TinkerGraph就是这样一种实现。通过这种方式,您可以本地分配顶点的标识符,而不是允许图形数据库为您创建它

gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV(id, UUID.randomUUID())
==>v[c2d673de-2425-4b42-bc1e-68ff20e3b0a8]
gremlin> g.V(UUID.fromString("c2d673de-2425-4b42-bc1e-68ff20e3b0a8"))
==>v[c2d673de-2425-4b42-bc1e-68ff20e3b0a8]

你能不能用一个不同的值来使用
property()
?是的,这就是我现在正在做的:-)那么,问题/问题是什么?因为“id”是一个保留属性,所以我假设它有一个特定的函数。您好@Stephen,我正在使用Gremlin Console-3.3.3,我想自己设置顶点标识符,我尝试了
gremlin>g.addV(id,UUID.randomuid())
但失败了,下面是错误消息:
没有方法签名:org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.addV()适用于参数类型:(org.apache.tinkerpop.gremlin.structure.T$2,java.util.UUID)…
我们现在似乎无法设置顶点标识符,不是吗?该语法不再有效
g.addV()
将顶点标签作为其参数。要添加
id
,您需要执行
g.addV().property(id,UUID.randomuid())
(并且可以选择将顶点标签指定为
addV()
)@stephenmallette-如果使用
g.addV(T.id,UUID.randomuid())
,它确实有效。有点令人困惑,但这不是addVertex步骤,而是addVertex方法,如果“g”是一个
图形
,那么,是的,它会工作,但是,用户不应该与
图形
实例交互。用户只能通过Gremlin与
图形
交互(即,“g”是
GraphTraversalSource