我需要返回节点及其ID,并且应避免这样的事情:
RETURN n, ID(n) as n_ID
我非常希望能够将ID 返回 a"计算"节点的属性,以便客户端看到节点好像它有一个名为id
的属性。
我现在已经打了几个小时。我找到的最近的是this comment under an unsatisfying answer to a similar question:
MATCH (n:Person) RETURN { id: ID(n), name: n.name } as user
该方法没用,因为它需要手动将节点重建为RETURN子句中的映射文字。如果您不知道所有属性名称,这是不可能的,这将是我的应用程序中的典型场景;另外,可能有很多的属性。
我接下来尝试的是运营商' +'。它会引发类型不匹配;你不能用这种方式将Map与Node结合起来。我找不到任何记录的方式将节点转换为地图。文档提到了KEYS(),但没有提到VALUES(),也没有提到" zip"键和值到地图中。
我想到的另一件事:
REDUCE(theMap = {id: ID(n)}, k in KEYS(n) | theMap + { what? : what? })
...但我不知道如何做一个"变量键"在数组文字中,以及如何通过变量键访问节点的属性。
我想在密码中尽力做什么?
答案 0 :(得分:0)
您可以在id
节点之后(并在同一事务中)添加CREATE
属性。例如:
CREATE (n:Person {name: "Fred", address: "123 Main St"})
SET n.id = ID(n)
RETURN n;
这样,您的节点实际上会有一个id
节点 - 以后不需要计算它。
答案 1 :(得分:0)