2012-04-29 4 views
2

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

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

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

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

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

ответ

3

Vinny, взгляд на http://tinyurl.com/7vryzwz, это то, что вы lookad для, в основном

START referrer=node(1) 
MATCH path=referrer-[:referred*1..]->refferee 
RETURN referrer,refferee, length(path) as generation 
ORDER BY length(path) asc 
+0

Чудный, Питер. Большое спасибо! – vinnylinux

Смежные вопросы