2012-04-29 4 views
2

Je suis en train de développer une petite structure d'affiliation pour mieux comprendre le concept des bases de données graphiques, apprendre Neo4J et voir ce qu'elle peut m'offrir. Je suis avec RDBMS depuis des années et Cypher est assez rude. J'essaye de construire un système d'affiliation très simple:Décrire une requête Cypher pour une relation à plusieurs niveaux dans Neo4j?

Affiliate Joe a recommandé Mary, Bob et Mark. Donc, je crée tous leurs nœuds et crée la relation "référencée". Maintenant, Mary se réfère à Julie, Jessica et Joan. Bob se réfère à Billy et Baxter. Mark se réfère à Michael et Marx. Et leurs références continuent de référer les gens.

Pour chaque référence que l'un des renvois originaux de Joe, Joe gagne une «génération». Sa première génération est Mary, Bob et Mark. Sa deuxième génération est Julie, Jessica, Joan, Billy, Baxter, Michael et Marx.

Maintenant, avec une requête Cypher, comment puis-je découvrir ses générations et, bien sûr, découvrir leur nombre? Leur place dans l'arbre? Comment puis-je savoir qui est de sa 3ème ou 4ème génération, et qui sont-ils?

Mon esprit est tordant ici, j'espère que vous pouvez aider.

Répondre

3

Vinny, regard sur http://tinyurl.com/7vryzwz, est-ce que vous lookad pour, essentiellement

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

Magnifique, Peter. Merci beaucoup! – vinnylinux

Questions connexes