1

我无法在图表中导入关系。

假设我有数百个已创建的唯一索引用户。然后我想创建大约 120k 个节点,每个节点都通过关系链接到某个用户。

不幸的是,我无法找到批量导入的方法。我正在尝试使用neography ruby​​ gem 来执行此操作,但是由于我对这种环境非常陌生,因此如果需要,我不介意使用其他方式。

我尝试了什么:

@neo.batch(
  [:get_node_index, 'user', 'user_id', '1'], #attempt to get the node from index
  [:create_node, {"foo => 'bar'}],
  [:create_relationship, "has" , "{0}", "{1}"] 
) # => fails

,

@neo.batch(
  [:create_unique_node, "user", "user_id", "1"], #attempt to create or get the node
  [:create_node, {"foo" => "bar"}],
  [:create_relationship, "has", "{0}", "{1}"]
) # => fails. 

请注意,仍然可以create_unique_node单独批处理一些命令。

我可以让脚本运行的唯一方法是使用

@neo.batch(
  [:create_node, {"user_id" => 1}], #works, but duplicates the node
  [:create_node, {"foo" => "bar"}],
  [:create_relationship, "has", "{0}", "{1}"]
) # => success

但是,这将复制我所有的用户节点,这绝对不是我想要实现的。看来我的问题与这个问题相似,但是我根本不明白在创建关系时应该如何使用索引。

任何帮助将不胜感激,在此先感谢

4

1 回答 1

0

由于这个问题已被赞成,我发布了从那时起我发现的解决方法:

正如问题中提到的,可以批量create_unique_node创建节点。然后该batch命令返回一个指针列表,您可以在其中获取每个节点的 neo4j id。我不确定是否记得我是否必须从某个哈希结构中提取 id,但我相信你会明白的。

所以基本上,我首先创建了一个批处理并将结果存储在一个数组中:

ids = @neo.batch(
    # list of `create_nodes` commands
) #=> returns a list of neo4j ids that you can use further.

为了链接节点,我使用了第二个批处理命令。而不是使用失败的{id}引用,您可以简单地使用节点的(绝对)neo4j id,所以这看起来像

[:create_relationship, "something", id1, id2]

其中id1id2由 给出ids

这基本上是我使用绝对 ID 而不是相对 ID 的解决方案....

于 2013-09-11T09:19:44.713 回答