Neo4j匹配多个标签

时间:2014-08-27 14:52:15

标签: neo4j cypher

我需要匹配任何一个节点标签。

我们可以为关系类型(如

)执行此操作
(n)-[:KNOWS|LOVES]->(m)

我们可以像这样匹配节点标签吗? 例如

MATCH (c:computer)<-[:belongs_to]-(comp:HP|IBM)
return comp

目前我已经尝试了这个并且它给出了结果,有没有更简单的方法?

MATCH (c:computer)<-[:belongs_to]-(comp)
WHERE 'HP' IN labels(comp) OR  'IBM' IN labels(comp)
return comp

3 个答案:

答案 0 :(得分:6)

我想

WHERE 'HP' IN labels(comp) OR  'IBM' IN labels(comp)

AND

WHERE comp:HP OR comp:IBM

将以相同的方式工作第二个使用简单

答案 1 :(得分:1)

您上次查询的这种形式至少更容易编写,更容易理解:

MATCH (c:computer)<-[:belongs_to]-(comp)
WHERE comp:HP OR comp:IBM
return comp;

答案 2 :(得分:0)

目前面临同样的问题。

因为我有很多标签要匹配(揭示我的架构中有点缺陷!)我发现以下内容可以简洁地解决这个问题:

MATCH (n:computer)
WHERE any(label in labels(n) WHERE label in ['HP', 'IBM'])
RETURN n