Gremlin / TinkerPop - propertyMap () имеет значения, но Vertex.properties () пуст - PullRequest
0 голосов
/ 28 марта 2019

Когда я делаю 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() вручную вообще не может найти никаких свойств.

Я думаю, что у меня есть какое-то принципиальное недопонимание того, что происходит (я только начал изучать, как это использовать), хотел бы быть просветленным о том, что мне не хватает.

1 Ответ

1 голос
/ 28 марта 2019

Нашел ответ в документах! https://tinkerpop.apache.org/docs/current/reference/#_properties_of_elements

Для запросов на основе байт-кода элементы графа имеют отрыв ссылки и, таким образом, возвращают только идентификатор и метку элементов. Несмотря на то, что этот подход устраняет потенциальную проблему с производительностью, которая раскрывается при использовании сценариев, все же важно придерживаться практики уточнения данных, которые требуются запрашивающему приложению, поскольку оно не поступит на стороне клиента без этой декларации.

Кажется, что удаленные серверы возвращают усеченный результат, который не содержит никаких свойств, которые явно не запрашиваются. В некотором роде удивило, что найти ответ на этот вопрос было так сложно, что кажется, что для начинающего, такого как я, ха-ха, это довольно распространенная проблема (отладка почти невозможна).

...