我有一个方法可以创建一个包含节点和关系yadda的图形。我想将一个节点ID列表返回给我的调用者,以便稍后的步骤可以快速找到这些节点并创建其他关系。我无法返回Node实例。
在SQL世界中,我可以返回主键或唯一键。在neo4j世界中,我该返回什么?是否有一个独特的节点标识符,我可以使用而不会让自己陷入地狱的第7层?我自己制作身份证吗?由于我沉浸在SQL中,我在学习Neo4J方式时遇到了麻烦。
答案 0 :(得分:2)
Neo4j中的每个节点(和关系)都有一个ID,技术上是相应数据存储文件中的偏移指针。您需要注意,删除某个节点并创建新节点可能会导致新节点具有以前使用的节点中的ID(因为它们会重用文件中的空闲区域)。
如果您确定不删除图表中的任何内容,则可以安全地使用内部节点ID,例如:通过MATCH (n) RETURN id(n) limit 5
。如果您使用节点ID删除图表中的内容是一种通往地狱7级的方法: - )
更安全的方法是将要引用的节点分配为人工标识符,例如,一个uuid,把它放在索引中。有一些工具可用于此,例如https://github.com/graphaware/neo4j-uuid