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
通过 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