如果与给定属性没有关系,则返回?

时间:2017-03-16 15:12:34

标签: neo4j cypher

我发现了关于检查no outgoing relationships of a given label exist on a nodethis one for checking the count of outgoing relationships with a given property的问题,但我需要做的是获取有关系的节点给定的属性设置。我相信我让自己变得更难了!

到目前为止我所拥有的是:

MATCH (n:Node)-[r:WEIGHTING]->()
WHERE NOT(ANY(rel IN r WHERE EXISTS(r.PROP)))
RETURN z

但是,显然,此时r是一个单一的关系,而不是关系的集合。我我需要涉及一个WITH条款,但我非常不自觉!

如何获取Node个没有WEIGHTING属性PROP关系的>>> x = '<foo width="150" height="108">' >>> import re >>> y = re.sub(r'width="[0-9]{2,4}"','width="400"',x) >>> y '<foo width="400" height="108">' 个?

我希望这个细节足够 - 抱歉,如果不清楚的话!

非常感谢, 汤姆

2 个答案:

答案 0 :(得分:1)

你可以这样做:

MATCH (n:Node)-[r:WEIGHTING]->()
WITH n, collect(r.PROP) AS props
WHERE size(props) = 0
RETURN n

或者:

MATCH (n:Node)-[r:WEIGHTING]->()
WITH n, collect(r) AS rs
WHERE NONE ( x IN rs WHERE EXISTS(x.PROP) )
RETURN n

答案 1 :(得分:1)

使用Neo4j,往往有几种方法可以满足您的需求。一个备用查询可能是:

MATCH (n:Node)
// only need the next WHERE clause if a WEIGHTING relationship is required
WHERE SIZE((n)-[:WEIGHTING]->()) > 0
OPTIONAL MATCH (n)-[r:WEIGHTING]->()
WHERE EXISTS (r.PROP)
WITH n 
WHERE r is null
RETURN n