Neo4j自动索引新用户创建

时间:2016-10-29 00:28:37

标签: neo4j

晚上好,

我在这里有点困惑,并对如何处理这件事感到好奇。

我使用neo4j-php-client在Neo4j 3.0中创建新用户。我想知道的是我如何在user_id上进行自动增量。

$client->run("CREATE (n:User:Artist) SET n += {infos}", ['infos' => ['id' => $id, 'first_name' => $fname, 'last_name' => $lname, 'slug' => $slug, 'born' => $born, 'bio' => $bio, 'password' => $pass, 'email' => $email, 'ip' => $ip, 'date_created' => $date_created, 'date_modified' => $last_updated, 'last_login' => $last_login, 'verified' => $verified, 'notified' => $notified]]);

我当前的数据是从MySQL数据库导入的,现在我试图通过Neo4j创建新用户。也许我在这里错过了一些东西。

谢谢, 格兰特

2 个答案:

答案 0 :(得分:0)

没有用于自动递增属性的内置工具。但是,您可以替换它,但随着数据集的增长,它会变得非常慢:

MATCH (n:User:Artist)
WITH COALESCE(MAX(n.user_id) + 1, 1) AS new_user_id
CREATE (n:User:Artist) 
SET n.user_id = new_user_id
SET n += {infos}

如果您的数据集很大,您可以通过保留某种:Status节点来为您跟踪这些属性来解决此问题,但您必须在查询中手动强制执行此自动增量。 / p>

答案 1 :(得分:0)

您可能会考虑使用生成的uuid代替自动递增的序列标识符。

数学上uuid应该是全局唯一的,并且根据类型和实现库,极少发生冲突。

APOC程序提供了一个uuid生成功能,你可以找到uuid生成器,用于你正在进行查询的任何服务器端语言。