【问题标题】:A vertex added using addV() to gremlin-server is not visible when executing a subsequent traversal执行后续遍历时,使用 addV() 添加到 gremlin-server 的顶点不可见
【发布时间】:2021-03-13 17:31:26
【问题描述】:

我在docker中运行官方gremlin-server镜像:

docker run -p 8182:8182 tinkerpop/gremlin-server:3.4.10

它从 8182 端口开始。

然后我执行以下代码:

try (RemoteConnection connection = openConnection();
        GraphTraversalSource g = openRemoteTraversalSource(connection)) {

    g.V().addV("Test").property("a", "b").iterate();

    System.out.println(g.V().toList().size());
}

在哪里

private DriverRemoteConnection openConnection() {
    return DriverRemoteConnection.using("localhost", 8182);
}

private GraphTraversalSource openRemoteTraversalSource(RemoteConnection connection) {
    return AnonymousTraversalSource.traversal().withRemote(connection);
}

我在类路径上有gremlin-driver

<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-driver</artifactId>
    <version>3.4.10</version>
</dependency>

此代码输出 0。但是当我使用 addV() 步骤添加一个顶点时,我希望得到一个结果。

我也尝试切换到janusgraph/janusgraph:0.5.3 并得到相同的结果,所以我想问题出在我的代码上,而不是gremlin-server

但是缺少什么?为什么添加的顶点不可见?

【问题讨论】:

    标签: java gremlin gremlin-server


    【解决方案1】:

    这一行

    g.V().addV("Test").property("a", "b").iterate();
    

    需要改成

    g.addV("Test").property("a", "b").iterate();
    

    【讨论】:

    • 谢谢,这行得通。但是我想知道如果g.V().addV()不添加顶点,为什么它在API中可用。
    • @RomanPuchkovskiy addV() 函数将AddVertexStep 添加到遍历中。它为每个传入的对象创建一个顶点。在您的情况下,传入对象为零,因为 g.V() 没有产生任何顶点。但如果它产生了 3 个顶点,那么 addV() 步骤将创建 3 个新顶点。
    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 2020-07-07
    • 2022-01-23
    • 2018-02-12
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多