Насколько я понимаю, идентификаторы, заданные Neo4j (ID(node)
), нестабильны и ведут себя как номера строк в SQL. Поскольку идентификаторы в основном используются для отношений в SQL, и они легко смоделированы в Neo4j, для идентификаторов, похоже, не так много, но тогда как вы решаете поиск определенных узлов? Наличие REST API, который должен иметь уникальные маршруты для каждого node (например, /api/concept/23
), кажется довольно стандартным для веб-приложений.
Но, несмотря на то, что он был настолько фундаментальным, единственный жизнеспособный способ, который я нашел, был либо через
- языковые рамки
- как несвязанный node, который поддерживает приращения:
// get unique id
MERGE (id:UniqueId{name:'Person'})
ON CREATE SET id.count = 1
ON MATCH SET id.count = id.count + 1
WITH id.count AS uid
// create Person node
CREATE (p:Person{id:uid,firstName:'Gabriel',lastName:'Smith'})
RETURN p AS person
Источник: http://www.neo4j.org/graphgist?8012859
Действительно ли нет более простого способа, а если нет, есть ли для этого конкретная причина? Является ли мой подход анти-шаблоном в контексте Neo4j?