显示与特定标记节点至少具有一种关系的节点

时间:2019-09-20 09:02:34

标签: neo4j cypher

嗨!

我当前正尝试通过Neo4j Browser显示所有带有特定标签的节点(这里称为“ Label1”),当它们中的每个节点至少具有一个与3个特定标签节点(“ X”,“ Y”)的连接时“,” Z“)。我尝试了以下查询:

MATCH (a)-->(b)
where a:Label1
and size((a)-->(b)) >= 1
and b:X
and b:Y
and b:Z
RETURN a,b, size((a)-->(b)) AS count

但是,它会返回所有内容,而不是仅返回带有这些标签的节点。我在这里做错什么了吗?

我也尝试排除不希望看到带有标签的节点,例如:

and not b:LabelX

但是它们仍然出现。

谢谢:-)

2 个答案:

答案 0 :(得分:1)

由于我假设:X,:Y和:Z节点是单独的而不是同一节点,并且每个节点只有一个,所以可以使用以下命令获得所需的内容:

MATCH (a:Label1)
WHERE (a)-->(:X)
AND   (a)-->(:Y)
AND   (a)-->(:Z)
RETURN a

答案 1 :(得分:0)

https://neo4j.com/docs/cypher-manual/current/syntax/patterns/#cypher-pattern-label

a必须具有标签User

(a:User)-->(b)

a必须具有标签User Admin

(a:User:Admin)-->(b)

所以

MATCH (a)-->(b)
where a:Label1
and b:X
and b:Y
and b:Z
RETURN a, b

可以写为:

MATCH (a:Label1)-->(b:X:Y:Z)
RETURN a, b