代码之家  ›  专栏  ›  技术社区  ›  Erik van de Ven

无法通过ID访问特定顶点,请使用gremlin控制台中的Tinkergraph

  •  0
  • Erik van de Ven  · 技术社区  · 6 年前

    我不能通过执行 g.V(3640).valueMap(true).unfold() . 任何包含圆括号中的ID的命令 g.V() 命令似乎不起作用。

    这就是我所做的:

    我不熟悉图形数据库和使用gremlin控制台进行试验。我首先创建了一个实例:

    graph = TinkerGraph.open()
    g=graph.traversal()
    

    并通过导入 .graphml 数据库文件:

    g.io(graphml()).readGraph('/full/path/to/air-routes-latest.graphml')
    

    这似乎很管用,因为数数的结果很好。

    gremlin> g.V().count()
    ==>3642
    

    不幸的是,以下内容不起作用:

    gremlin> g.V(3640).valueMap(true).unfold()
    

    我认为这很奇怪,因为通过执行以下命令

    gremlin> g.V()
    ==>v[3640]
    ==>v[2306]
    ...
    

    ID似乎确实存在。我为什么不能访问特定的ID有什么想法吗?我试过不同的命令但是 g() 似乎工作得很好,而且 g.V(3640) 没有。是因为我使用的是Tinkergraph而不是Gremlin数据库吗?

    编辑:

    我的身份证好像被保存为字符串,因为 g.V("2").valueMap(true).unfold() 会给我结果的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   stephen mallette    6 年前

    我认为您可能对标识符的“类型”有问题。我怀疑如果你这样做:

    g.V(3640L)
    

    你将得到你想要的顶点。默认情况下,Tinkergraph使用 equals() 所以,如果您试图在ID是长的时候找到一个整数,它的行为就好像不存在一样。如果您愿意,可以使用 IdManager 讨论的配置 here . 请注意,这也将在中进行更详细的讨论。 Practical Gremlin .