Yes, but it would never be counted as a friend of friend.
> Le 16 mars 2016 à 00:28, Michael Hunger <michael.hun...@neotechnology.com> a > écrit : > > your shortest-path doesn't imply that it's not the same person. > > Robert would also be counted as direct friend. > > On Wed, Mar 16, 2016 at 12:25 AM, Michael Azerhad <michael.azer...@gmail.com > <mailto:michael.azer...@gmail.com>> wrote: > Hi Michael, > > I think your query would result wrong results. > > Michael - KNOWS - Julia - KNOWS - Robert - KNOWS - Michael (same Michael as > previous one) > > It would consider Robert as a friend's friend for Michael (Michael - Julia - > Robert). > However, it is his direct friend ... (Robert - Michael) > I think your solution can't work with cyclic graph ;) > > That's why I used shortestPath function, that clearly avoids that. > > What do you think? > > > On Wednesday, March 16, 2016 at 12:03:52 AM UTC+1, Michael Hunger wrote: > try this: > > MATCH (person:Person) > OPTIONAL MATCH > (person)-[:KNOWS]-(f1:Person)-[:KNOWS]-(f2:Person)-[:KNOWS]-(f3:Person) > WITH person, count(distinct f1) as f1, count(distinct f2) as > f2,count(distinct f3) as f3 > RETURN person._firstName + " " + person._lastName, f1, f2, f3 > > alternatively > > MATCH (person:Person) > OPTIONAL MATCH (person)-[:KNOWS]-(f1:Person)-[:KNOWS]-(f2:Person) > WITH person, count(distinct f1) as f1, count(distinct f2) as > f2,collect(distinct f2) as p2 > WITH person, f1,f2, reduce(x=0, p in p2 | x + size((p2)-[:KNOWS]-()) ) as f3 > RETURN person._firstName + " " + person._lastName, f1, f2, f3 > > > > On Tue, Mar 15, 2016 at 10:30 PM, Michael Azerhad <michael...@gmail.com <>> > wrote: > Using Neo4J 2.1.5. > > Data: > 2000 Persons > KNOWS relationships between some of them > > Goal of the query: > > For each person, display her fullname + amount of friends + amount of > friends' friends + amount of friends' friends' friends. > > MATCH (person:Person) > WITH person > OPTIONAL MATCH person-[:KNOWS]-(p:Person) > WITH person, count(p) as f1 > OPTIONAL MATCH path = shortestPath(person-[:KNOWS*..2]-(f2:Person)) > WHERE length(path) = 2 > WITH count(nodes(path)[-1]) AS f2, person, f1 > OPTIONAL MATCH path = shortestPath(person-[:KNOWS*..3]-(f3:Person)) > WHERE length(path) = 3 > WITH count(nodes(path)[-1]) AS f3, person, f2, f1 > RETURN person._firstName + " " + person._lastName, f1, f2, f3 > > > This query lasts long ! : 60 seconds ! > > Is there a tips to optimize it? > > Thanks, > > Michael > > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+un...@googlegroups.com <>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+unsubscr...@googlegroups.com > <mailto:neo4j+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to a topic in the Google > Groups "Neo4j" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/neo4j/5YkOeCylHEY/unsubscribe > <https://groups.google.com/d/topic/neo4j/5YkOeCylHEY/unsubscribe>. > To unsubscribe from this group and all its topics, send an email to > neo4j+unsubscr...@googlegroups.com > <mailto:neo4j+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.