2012-07-02 4 views
2

У меня есть график, представляющий пользователей и некоторые статьи, которые они написали. Мне нужно создать что-то вроде потока активности, включая статьи, написанные пользователем, а также его друзьями.Перемещение узлов, но включая исходный узел в результате в Neo4J с Gremlin

http://twitpic.com/a342f4

я могу иметь все сообщения друзей пользователя, как это:

g.v(4).out("KNOWS").out("POSTED") 

и возвращает

v[9] 
v[11] 

Но я также должен включать в себя сообщения от исходного пользователя извлеченного с запросом:

g.v(4).out("POSTED") 

это возвращает

v[10] 

Как я могу иметь все сообщения без необходимости делать 2 запросов, а затем объединять их в дальнейшем? мне нужно, чтобы получить что-то подобное в ответ:

v[9] 
v[10] 
v[11] 

Благодаря

PD: Я использую Gremlin и Neo4jClient, но если кто-нибудь есть лучшее решение с чем-то еще его будет тоже хорошо, при этом Тут я все еще могу изменить некоторые из инструментов, я использую совокупный шаг

+0

Вы не можете использовать гремлин? Является ли Cypher опцией, если это можно сделать с помощью запроса Cypher. – Nicholas

+0

Совсем нет, я изучаю Neo4j для проекта C#, поэтому в принципе я могу что-то изменить, пока я могу реализовать его на C#. – Malave

ответ

2

Используйте Gremlin и уникальный метод Groovy в:

posts = [] 
g.v(4).out('POSTED').aggregate(posts).iterate() 
g.v(4).out('KNOWS').out('POSTED').aggregate(posts).iterate() 
return posts.unique() 

См .. .

+0

Точно то, о чем я думал, это должно соответствовать его потребностям. – Nicholas

+0

Спасибо за быстрый ответ, я постараюсь сделать это с помощью библиотеки C# и дам вам знать, как это происходит. – Malave

+0

@espeed Это делает именно то, что мне нужно, мне просто нужно выяснить, как это сделать на клиенте .Net. – Malave

0

Я знаю, что вы попросили гном, но вы сказали, что вы были открыты для Cypher, а также, которые могут представлять собой запрос в другом формате

START 
    user=node(4) 
MATCH 
    user-[:POSTED]->posts, 
    user-[:KNOWS]->()-[:POSTED]->friendPosts 
RETURN 
    posts, friendPosts 

это вернет результаты, которые вы ищете, используя Cypher.

// EDIT Объяснение: Сначала это пройдет и захватит все сообщения пользователя, а затем перейдет к другу, который теперь анонимный, так как нам на самом деле не нужна информация для друга, а затем переходите к друзьям сообщения.