如何根据某些属性获取精确节点

时间:2013-04-09 10:39:50

标签: cypher spring-data-neo4j

我正在创建一些节点和关系,如下所示,请忽略变量名称约定: -

create e1={name:'sayeed', eId:1},   
p1={pId:101, is_flag1:'Y', is_flag2:'N', is_flag3:'Y'},    
p2={pId:102, is_flag1:'N', is_flag2:'N', is_flag3:'N'},   
p3={pId:103, is_flag1:'N', is_flag2:'Y', is_flag3:'N'},  
p1<-[:HAS_REL]-e1, p2<-[:HAS_REL]-e1, p3<-[:HAS_REL]-e1;

并从此查询中搜索节点:

start e = node:node_auto_index('name:sayeed')  
match e-[:HOLD]-p
where p.is_flag2='N'  
return distinct e;

以上查询获取实体“e”但在我的情况下它不应该得到。以下是详细说明。

我想获得具有“:HAS_REL”关系且所有“is_flag2”值应为“N”的实体 如果“is_flag2”中的任何一个是“Y”我不应该得到该实体。请让我知道 如何编写密码查询。

1 个答案:

答案 0 :(得分:1)

您应该使用此查询:

START e = node:node_auto_index('name:sayeed') 
MATCH e-[:HAS_REL]-p 
WHERE p.is_flag2='N' 
RETURN DISTINCT e;

您在match子句中使用了错误的关系查找。我希望这会有所帮助。