neo4j减去路径的元素

时间:2014-08-20 02:21:00

标签: path neo4j cypher

我正在尝试在Cypher(Neo4)中使用此查询:

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP) WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM' AND NONE(x IN nodes(p) WHERE x.NameExp='Jac_AGM' OR x.NameExp='Bos_SM')  RETURN n,e,g limit 100

也就是说,我想在路径(p)中排除一些具有“Jac_AGM”和“Jac_SM”属性的节点。我正在使用Neo4j 2.1.3版。

谢谢! 最好的祝愿, R上。

2 个答案:

答案 0 :(得分:1)

根据您的查询,您已经提到了n和e节点的NameExp属性值。因此,显而易见的是,您希望不包含给定名称的节点属于g:MOL标记节点的集合,您可以简单地将其删除,如下所示...

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP) 
WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM' 
AND NOT g.NameExp IN ['Jac_AGM','Jac_SM']
RETURN n,e,g limit 100

答案 1 :(得分:0)

集合filter中的p个节点还有一个明确的选项:

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP)
WITH FILTER(x IN nodes(p): x.NameExp NOT IN ['Jac_AGM','Bos_SM']) AS pp, n, e
WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM'
RETURN n,e,g limit 100

source