MATCH 具有可变标签名称 NEO4J 的节点

MATCH for nodes with variable label name NEO4J

通过 neo4j 中的查询,我将标签名称作为变量,因此在同一个查询中,我想找到所有具有该标签的节点。我知道我不能像这样为标签名称设置变量

MATCH (n:${variable}) RETURN n

也不

MATCH (n:variable) RETURN n

我正在寻找适合我的情况的解决方法 我找不到 apoc 适合这种情况的功能。我期待这样的功能

apoc.match.node(['labelName'])

我知道可以使用 WHERE

找到带有标签的节点
WHERE label IN labels(nodes)

我的猜测是这种结构会减慢搜索速度所以我想避免它

使用纯 Cypher 是不可能的,但您可以考虑使用 APOC 的 apoc.cypher.run 程序:

WITH $variable AS label
CALL apoc.cypher.run("MATCH (:" + label + ") RETURN count(*) AS count", {})
YIELD value
RETURN label, value.count AS count;

https://neo4j.com/labs/apoc/4.1/overview/apoc.cypher/apoc.cypher.run/#usage-apoc.cypher.run