我正在从事一个Rails项目,该项目将读取和解析一些较大的文本文件(大约100 k行),并使用这些数据构建Neo4j节点(我正在使用新摄影术)。这是我编写的代码中与Neo4j相关的部分:
d= Neography::Rest.new.execute_query("MATCH (n:`Label`) WHERE (n.`name`='#{id}') RETURN n")
d= Neography::Node.load(d, @neo)
p= Neography::Rest.new.create_node("name" => "#{id}")
Neography::Rest.new.add_label(p, "LabelSample")
d=Neography::Rest.new.get_node(d)
Neography::Rest.new.create_relationship("belongs_to", p, d)因此,我要做的是:在已经填充的db中搜索具有与解析数据相同的"name“字段的节点,为该数据创建一个新节点,并最终在它们之间创建一个关系。显然,这段代码只需花费太多的时间才能执行。所以我试着用Neography的批次,但遇到了一些问题。
p = Neography::Rest.new.batch [:create_node, {"name" => "#{id}"}]给我一个“未定义的”方法“拆分”,表示“nil:NilClass”
id"self".split('/').last
d=Neography::Rest.new.batch [:get_node, d]给我一个Neography::UnknownBatchOptionException for get_node
我甚至不确定这也能节省我足够的时间。
我还尝试了不同的方法来实现这个目标,例如使用批量进口,但是我无法找到从db中获取我需要的已经创建的节点的方法。正如你所看到的,我对这件事有点陌生,所以任何帮助都会受到感谢。提前谢谢。
发布于 2015-02-04 14:06:46
您可能可以使用纯密码(或新生成的密码)来完成此操作。也许是这样的:
MATCH (n:Label) WHERE n.name={id}
WITH n
CREATE (p:LabelSample {name: n.name})-[:belongs_to]->n我并不是在使用CREATE,但是如果您不想创建重复的LabelSample节点,您可以这样做:
MATCH (n:Label) WHERE n.name={id}
WITH n
MERGE (p:LabelSample {name: n.name})
CREATE p-[:belongs_to]->n请注意,我使用的是params,这通常被推荐用于性能(虽然这只是一个查询,所以并不是什么大问题)
https://stackoverflow.com/questions/28322007
复制相似问题