2

在路径查询方面没有太多经验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,我想执行查询以检索所有配置文件,其中至少存在以下一个条件(在配置文件上具有不同):

  • p1 偷偷摸摸
  • p1 是(朋友)|| (朋友的朋友)
  • p1 至少挂一个场地作为他们
  • p1 与他们进行了会话
  • p1 有一个会议,他们很喜欢

我还需要能够提取关系类型以找出这些配置文件之间的关系......

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

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

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

几乎没有问题:

1) 它还将返回偷偷摸摸p1
的个人资料 2) 它还将返回p1朋友之一偷偷看他们
的个人资料 3) 它还将返回个人资料p1的朋友偷偷摸摸他们的个人资料

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

4

1 回答 1

2

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

于 2013-06-19T19:22:25.590 回答