嗨!
我当前正尝试通过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
但是它们仍然出现。
谢谢:-)
答案 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