You know what, I just found the traverse method variant that takes a
variable number of relationship types and directions
<http://api.neo4j.org/current/org/neo4j/api/core/Node.html#traverse(org.neo4j.api.core.Traverser.Order,%20org.neo4j.api.core.StopEvaluator,%20org.neo4j.api.core.ReturnableEvaluator,%20java.lang.Object...)>.
 Looks like that does exactly what I need.

Sorry for the spam,
Rich

On Thu, Jul 9, 2009 at 10:26 PM, Richard
Wallace<[email protected]> wrote:
> Hello,
>
> I've been experimenting with neo4j as a replacement for a typical
> relational database in an application I'm working on.  The object
> graph I have has a relationship path like
>
> Customer ---- customer ordered ----> Order ----> order includes ---->
> Item ----> of type ----> Type
>
> There are other relationships, but this is the one I'm interested in
> finding out about at the moment.  What I want to be able to do is find
> all the customers that have ordered items of a specific type.  I
> looked at the traverser API and you can find last relationship
> traversed, but is there a way to find the path that was traversed?
> One solution might be to start with the type node(s) and find any
> customer nodes?  But, if there is an additional relationship like
>
> Customer ----> interested in -----> Type
>
> I'm not sure that would work.  I suppose I could also do a the
> traversal a bit more manually like
>
> for (Relationship orderedRel : customerNode.getRelationships(ORDERED)) {
>    for (Relationship includesRel :
> orderedRel.getEndNode().getRelationships(INCLUDED)) {
>        for (Relationship typeRel :
> includesRel.getEndNode().getRelationships(OF_TYPE)) {
>            if (typeRel.getProperty("name").equals(searchType)) {
>                customersWhoBought.add(orderedRel.getEndNode());
>            }
>        }
>    }
> }
>
> But that seems inefficient.  Is there a better way?
>
> Thanks,
> Rich
>
_______________________________________________
Neo mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to