apoc.merge.node 具有特殊标识符失败
apoc.merge.node with special identifier fails
我试图将一个节点与 apoc.merge.node 合并,但我的 ident 属性 键有一个特殊的 char(:) 并且得到双重转义。我错过了什么或者是否存在解决方法?
如果我将“:”替换为“_”,一切都会按预期进行。
Neo4j 4.2.1 社区和 APOC 4.2.0
CALL apoc.merge.node(["test"], apoc.map.fromPairs([["i:d","123"]])) YIELD node return node
错误
Failed to invoke procedure `apoc.merge.node`: Caused by: org.neo4j.exceptions.SyntaxException: Invalid input 'i': expected "}" (line 1, column 17 (offset: 16))
"MERGE (n:test{``i:d``:$identProps.``i:d``}) ON CREATE SET n += $onCreateProps ON MATCH SET n += $onMatchProps RETURN n"
编辑
APOC 中似乎存在错误,导致标识符被编码两次。
先用Util::quote
https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/4.1/core/src/main/java/apoc/util/Util.java#L674
我已提交问题:https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/1783
在 Neo4j 中,您可以在包含特殊字符的键周围使用反引号 ` :
CALL apoc.merge.node(["test"], apoc.map.fromPairs([["`i:d`","123"]]))
YIELD node
return node
在 Cypher 语法中到处都是一样的,用空格转义标签,例如 :
MERGE (n:`Land Vehicle` {id: "land-rover-1"})
我试图将一个节点与 apoc.merge.node 合并,但我的 ident 属性 键有一个特殊的 char(:) 并且得到双重转义。我错过了什么或者是否存在解决方法? 如果我将“:”替换为“_”,一切都会按预期进行。
Neo4j 4.2.1 社区和 APOC 4.2.0
CALL apoc.merge.node(["test"], apoc.map.fromPairs([["i:d","123"]])) YIELD node return node
错误
Failed to invoke procedure `apoc.merge.node`: Caused by: org.neo4j.exceptions.SyntaxException: Invalid input 'i': expected "}" (line 1, column 17 (offset: 16))
"MERGE (n:test{``i:d``:$identProps.``i:d``}) ON CREATE SET n += $onCreateProps ON MATCH SET n += $onMatchProps RETURN n"
编辑
APOC 中似乎存在错误,导致标识符被编码两次。
先用Util::quote
https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/4.1/core/src/main/java/apoc/util/Util.java#L674
我已提交问题:https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/1783
在 Neo4j 中,您可以在包含特殊字符的键周围使用反引号 ` :
CALL apoc.merge.node(["test"], apoc.map.fromPairs([["`i:d`","123"]]))
YIELD node
return node
在 Cypher 语法中到处都是一样的,用空格转义标签,例如 :
MERGE (n:`Land Vehicle` {id: "land-rover-1"})