【问题标题】:Use variable to match a node label in Neo4J CYPHER使用变量匹配 Neo4J CYPHER 中的节点标签
【发布时间】:2016-12-05 08:43:04
【问题描述】:

我将运行一些复杂的 MATCH,它会返回一个节点标签给我。然后我想修剪该节点标签的前缀并使用它的其余部分来进一步执行匹配。我试图通过将返回标签的其余部分分配给变量,然后将该变量用于标签MATCH中的节点来做到这一点。

但是我觉得这不起作用,因为我们不能使用变量来标记 MATCH 中的节点。

例如创建简单的两个节点图:

CREATE (:PrefixNodeLabel)
CREATE (:NodeLabel)

这个:

MATCH(n:PrefixNodeLabel)
RETURN substring(labels(n)[0],6)

正确返回NodeLabel

我正在尝试使用它来标记节点:

MATCH(n:PrefixNodeLabel)
WITH substring(labels(n)[0],6) AS nodeLabel
MATCH(m:nodeLabel)   //using a variable to label a node
RETURN m

但这不会返回(:NodeLabel) 节点。

我知道我在做什么可能看起来很奇怪。但是无论如何我该怎么做呢?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    你不能传递变量来代替标签

    你可以通过

    MATCH (n:PrefixNodeLabel)
    WITH SUBSTRING(labels(n)[0],2) AS nodeLabel
    MATCH (m)   
    WHERE nodeLabel IN LABELS(m)
    RETURN m
    

    【讨论】:

    • 啊,我希望我可以使用具有额外语法的变量,例如 ${variableName} 等。额外的查询有点痛苦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多