Return 节点 ID 以及完整节点

Return node ID along with complete node

我是 Neo4j 的新手,正在处理 spring 数据 Neo4J 存储库。我想获取具有所有 属性 值和节点 ID 的所有节点。像

{name: 'sid',age: 20, id: 123}

一个选项是进行以下查询

match (e: Employee) return {name: e.name, age: e.age, id: ID(e)}

但这里的问题是我必须在 JSON 定义中显式添加所有属性。否则可以执行以下操作,但这给了我嵌套对象而不是平面对象

match (e: Employee) return {obj: e, id: ID(e)}

有人可以帮我解决这个问题吗?

编辑:实际查询更复杂,有两个以上不同的节点标签

我认为当前的 Cypher 语法无法创建具有 e 的所有属性外加额外 id 属性.

的平面地图

但有一个您可能认为可以接受(或矫枉过正)的解决方法。那就是在创建时将 id 属性 添加到每个 Employee 节点。这必须在 SET 子句中完成,因为新节点的 ID 在 CREATE 子句中不可用。例如:

CREATE (e:Employee {name: "Fred", age: 42})
SET e.id = ID(e)

这样,您的 MATCH 查询就会非常简单:

MATCH (e: Employee)
RETURN e;