我正在使用带有py2neo的烧瓶进行Rest服务,我有一个标签为“User”的用户节点。
如何使用py2neo在neo4j中自动增加“User”标签的id?
答案 0 :(得分:3)
你不是,你可能不应该这样做。 Neo4j已经提供了一个内部id
字段,它是一个自动递增的整数。它不是节点的属性,但可以通过id()
函数访问,如下所示:
MATCH (n:Person)
RETURN id(n);
因此,无论何时创建任何节点,这都已经由neo4j自动发生,并且不是由py2neo完成的。
如果您的代码需要不同类型的标识符,我建议使用一些似乎全局唯一的标识符,例如UUID,这在python中非常容易,而不是自动递增整数。
将数字自动递增为ID的问题在于,由于它们具有模式(自动递增),人们开始依赖于标识符的值,或者依赖于如何分配ID的期望。这在数据库中几乎总是一个坏主意。标识符的唯一目的是与其他所有内容都是唯一的。它并不意味着什么,在某些情况下甚至不能保证不会改变。避免在代码中嵌入任何特定值或赋值方案。
这就是我喜欢UUID的原因,因为他们的任务计划基本上是武断的,而且他们显然没有任何意义 - 所以他们不会诱使设计师做任何聪明的事情。 :)