Gremlin / TinkerPop - propertyMap()具有值,但Vertex.properties()为空

问题描述 投票:0回答:1

当我做g.V().propertyMap()时,我能够获得存储在顶点上的属性。但是,当我实际迭代g.V()并尝试自己获取属性时,似乎没有任何属性。

这是一个代码示例:

    System.out.println("propertymap: " + g.V().propertyMap());
    g.V().propertyMap().forEachRemaining(e -> System.out.println(e.toString()));
    Iterator<Vertex> vi = g.V();
    while (vi.hasNext()) {
        Vertex vertex = vi.next();
        System.out.println("keys for " + vertex.label() + ": "
                + vertex.keys()
                + " properties.hasNext: "
                + vertex.properties().hasNext());
    }

和相应的输出:

propertymap: [GraphStep(vertex,[]), PropertyMapStep(property)]
{Name=[vp[Name->Justin]]}
{Name=[vp[Name->Bob]]}
keys for Person: [] properties.hasNext: false
keys for Person: [] properties.hasNext: false

如您所见,forEachRemaining调用能够正确地将属性键的映射输出到将键映射到值的VertexProperty

但是,我手动迭代同一组顶点g.V()的代码根本无法找到任何属性。

我想我在这里发生了一些基本的误解(刚刚开始学习如何使用它),我希望能够了解我所缺少的东西。

graph-databases gremlin tinkerpop tinkerpop3
1个回答
1
投票

在文档中找到答案! https://tinkerpop.apache.org/docs/current/reference/#_properties_of_elements

对于基于字节码的请求,图元素具有引用分离,因此仅返回元素的id和标签。虽然这种方法减轻了脚本方法暴露的潜在性能问题,但仍然重要的是遵循请求应用程序所需的特定数据的实践,因为如果没有该声明它将不会到达客户端。

远程服务器似乎返回一个不包含任何未明确请求的属性的精简结果。有点惊讶的是,对于像我这样的初学者来说,感觉这是一个有点普遍的问题(几乎不可能调试),这很难找到答案。哈哈。

© www.soinside.com 2019 - 2024. All rights reserved.