创建Neo4j后无法访问属性值

时间:2019-07-16 20:21:23

标签: neo4j cypher

我的问题是,在我插入几个类型为uri的节点后:

 "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Red"

稍后,我想提取标签(在这种情况下为“红色”)之后的部分,因此我使用split函数并创建具有值tail(records)的属性名称:

MATCH (n) WITH split (n.uri, '#') AS records, n 
WHERE head(records) = 'http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine' 
SET n.name = tail(records)

在为一组节点成功创建了具有适当名称的属性名称后,我检查(目前一切正常):

 Match (n) Return keys(n)

我为所有节点创建一个标签(概念):

MATCH (n) SET n :concept RETURN n

稍后尝试访问属性“名称”的值:

 Match (n{name: 'Red'}) RETURN n

Match (n:concept{name: 'Red'}) RETURN n

我得到的响应是空的(显然,它甚至没有连接到创建的标签,甚至在我无法访问它之前)。多谢您的协助。谢谢!

1 个答案:

答案 0 :(得分:1)

TAIL(x)函数返回一个 list (在第一个值之后的x中的所有值),而不是标量值。因此,示例中的name的值为["Red"],而不是"Red"

代替:

SET n.name = tail(records)

您的Cypher代码应使用以下代码(假设您的uri值始终嵌入“#”):

SET n.name = records[1]