Описываете Cypher Query для многоуровневых отношений в Neo4j?

Я разрабатываю небольшую партнерскую структуру, чтобы лучше понять концепцию графовых баз данных, а также изучить Neo4J и посмотреть, что он может мне предложить. Я работаю с RDBMS уже много лет, и Cypher довольно груб. Я пытаюсь построить очень простую партнерскую систему:

Партнер Джо направил Мэри, Боба и Марка. Итак, я создаю все их узлы и создаю «упомянутые» отношения. Теперь Мэри обращается к Джули, Джессике и Джоан. Боб ссылается на Билли и Бакстера. Марк ссылается на Майкла и Маркса. И их рефералы продолжают направлять людей.

За каждого реферала, который является одним из первоначальных рефералов Джо, Джо получает «поколение». Его первое поколение - Мэри, Боб и Марк. Его второе поколение - Джули, Джессика, Джоан, Билли, Бакстер, Майкл и Маркс.

Теперь, с помощью запроса Cypher, как я могу узнать его поколения и, конечно же, узнать их количество? Их место в дереве? Как я могу узнать, кто из его 3-го или 4-го поколения, и кто они?

Мой разум скручивается здесь, надеюсь, вы, ребята, можете помочь.


person vinnylinux    schedule 29.04.2012    source источник


Ответы (1)


Винни, посмотри на http://tinyurl.com/7vryzwz, это то, что ты ищешь, в основном

START referrer=node(1) 
MATCH path=referrer-[:referred*1..]->refferee 
RETURN referrer,refferee, length(path) as generation 
ORDER BY length(path) asc 
person Peter Neubauer    schedule 30.04.2012
comment
Замечательно, Питер. Большое спасибо! - person vinnylinux; 30.04.2012