Как мне собрать данные о вершине при перемещении по графику, а затем вывести их вместе с результатами?

Я экспериментирую с использованием графической базы данных для моделирования простой ленты новостей. Хотя я не использую Neo4j, я примерно следую этой модели для своего графика:

http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html

Приведенный ниже запрос gremlin извлекает 15 самых последних сообщений от каждого из друзей пользователя, а также собственные сообщения пользователей. (Я буду ранжировать, фильтровать и разбивать на страницы позже).

g.V().hasLabel("user").has("userid", "john.smith")
     .union(
         out("posted"),
         both("friend").out("posted")
     ).next(15).toList();

Проблема в том, что мне нужно получить данные о самих users. Такие вещи, как URL-адрес аватара, отображаемое имя и т. Д. Эти данные хранятся как свойства для каждой user вершины.

Как я могу собирать эти данные при просмотре графика и выводить их вместе с каждым сообщением?

Было бы здорово иметь возможность просто возвращать каждое сообщение с внедренным объектом user, содержащим все свойства вершины user, связанной с каждым сообщением:

Любая помощь будет принята с благодарностью.


person gordyr    schedule 07.10.2016    source источник


Ответы (1)


Один из способов сделать это - использовать select ()

g.V().hasLabel("user").has("userid", "john.smith").as('user')
     .union(
         out("posted"),
         both("friend").out("posted")
     ).as('posts').select('user','posts').next(15).toList();
person stephen mallette    schedule 07.10.2016
comment
Отлично, я новичок в графических базах данных, и ваш пример помог мне понять некоторые фундаментальные концепции. Ваше здоровье! - person gordyr; 07.10.2016