Neo4j - 按 ID 查找节点 - 如何获取用于查询的 ID?

Neo4j - Find node by ID - How to get the ID for querying?

出于性能原因,我希望能够通过 ID 找到特定节点(ID 比索引更有效)

为了执行下面的例子:

MATCH (s)
WHERE ID(s) = 65110
RETURN s

我需要节点的 ID(在本例中为 65110)

但是我怎么得到它呢?由于ID是自动生成的,不查询图表是不可能找到ID的,这样就违背了目的,因为我已经有了节点。

我是不是漏掉了什么?

TL;DR:使用索引 属性 进行查找,除非您绝对需要优化并且可以衡量差异。

通常使用索引查找作为图的入口点,即获取提供边遍历起点的节点。虽然 Neo4j 节点 ID 的类指针性质意味着它们在理论上更快,但索引查找也非常有效,因此您不应该在性能方面打折它们,除非您确定它会产生可衡量的差异。

您还应该考虑到 Neo4j 节点 ID 不稳定。如果您删除一个节点,则将来可能会重新使用相同的 ID。出于这个原因,它们实际上应该被视为内部实现细节,而不是应用程序外部接口的一部分。

就是说,我有一个应用程序将 Neo4j ID 存储在 Solr 索引中以批量查找节点,但该索引被认为是易变的,并且节点还包含一个索引的、应用程序生成的 UUID 属性 (具有唯一约束)作为他们的主要 "primary key"。

进一步阅读和讨论:https://github.com/neo4j/neo4j/issues/258