Cypher查找路径查询

时间:2013-06-19 16:52:35

标签: path neo4j cypher

Cypher路径查询中没有多少经验,但似乎路径是合理的方式来做我想要的有效...

我的Neo4j

中有以下相关关系
p1-[r:SNEAK]->otherProfile
p1-[r:FRIEND]-otherProfile (the direction not relevant) 
p1-[r:HANG]->venue<-[r:HANG]-otherProfile
p1-[r:INTERACT]->session<-[r:INTERACT]-otherProfile
p1-[r:INTERACT]->session<-[r:LIKE]-otherProfile

我想说我手中有 p1 ,我想执行一个查询来检索所有配置文件,其中至少存在以下一个条件( distinct 在个人资料上):

  • p1潜行他们
  • p1是(朋友)|| (朋友的朋友)
  • p1至少挂起一个场地
  • p1与他们进行会话
  • p1有一个会话,他们喜欢它

我还需要提取关系类型的能力,以便弄清楚什么是关系 这些简介之间...

  • 假设这些是数据库中的所有关系类型

首先看起来很简单,只需检索以下所有路径:

p=p1-[r*1..2]-profile

很少有问题:

1)它还会返回潜入 p1 的个人资料 2)它还会返回其中一个 p1 朋友潜入其中的个人资料 3)它还会返回个人资料,这些资料是 p1 潜行在他们身上的朋友

是否可以执行一个Cypher查询来完成我的用例工作?

1 个答案:

答案 0 :(得分:2)

一个简单的快捷方式是能够在WHERE子句中使用not来执行路径限定符。所以你可以进行匹配,然后指定WHERE NOT(p1-[:SNEAK*1..2]->profile)或者你想要限定它。