当我执行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()
的代码根本找不到任何属性。
我想我对正在发生的事情有一些基本的误解(刚开始学习如何使用它),希望对我的缺失有所启发。
答案 0 :(得分:1)
在文档中找到答案! https://tinkerpop.apache.org/docs/current/reference/#_properties_of_elements
对于基于字节码的请求,图元素具有引用分离,因此仅返回元素的ID和标签。尽管这种方法减轻了脚本方法暴露的潜在性能问题,但是遵循特定于请求应用程序所需数据的做法仍然很重要,因为如果没有该声明,数据就不会到达客户端。 / p>
似乎远程服务器返回的精简结果不包含未明确请求的任何属性。令我惊讶的是,对于像我这样的初学者来说,这似乎是一个普遍的问题(几乎不可能调试),这很难找到答案。