我正在尝试在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上。
答案 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