gpt4 book ai didi

neo4j - Neo4j中的自动增量属性

转载 作者:行者123 更新时间:2023-12-03 20:55:00 25 4
gpt4 key购买 nike

据我了解,Neo4j(ID(node))给出的ID是不稳定的,其行为有点像SQL中的行号。由于ID主要用于SQL中的关系,并且可以在Neo4j中轻松建模,因此ID似乎用处不大,但是如何解决特定节点的检索呢?对于每个Web应用程序来说,拥有一个REST API应该具有每个节点的唯一路由(例如/api/concept/23)似乎很标准。
但是,尽管它是如此基础,但我发现的唯一可行方法是通过


语言特定的框架
作为保持增量的未连接节点:


// 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的背景下,我的方法是一种反模式吗?

最佳答案

Neo4j内部ID比sql行ID更稳定,因为它们在事务处理期间永远不会更改,例如

实际上,不建议将它们暴露给外部使用。我知道Neo内部人员有一些实现这种功能的意图。

基本上,人们倾向于使用两种解决方案:


在应用程序级别(如PHP:https://packagist.org/packages/rhumsaa/uuid)使用UUID生成器,并在所有节点上添加标签/ uuid唯一约束。
使用非常简单的Neo4j插件(例如https://github.com/graphaware/neo4j-uuid),可以动态添加uuid属性,因此它减轻了您在应用程序级别处理它的负担,并且更易于管理节点对象的持久状态

关于neo4j - Neo4j中的自动增量属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com