neo4j / cypher:悬挂查询参数

一直以来,我一直在使用neo4j密码查询语言, 迈克尔一直在告诉我在查询中使用参数,但是查询的性能始终可以接受,因此我没有必要。 但是,最近我正在研究一个数据集,并使用类似于以下的代码创建了约500个节点:

require 'open-uri'

open("data/people.cyp", 'w') { |f|
  (1..500).each do |value|
    f.puts("CREATE (p:Person{name: \"#{value}\"})")
  end
}

这将创建一个如下所示的cypher语句文件:

CREATE (:Person{name: "person1"})
CREATE (:Person{name: "person2"})
CREATE (:Person{name: "person3"})
CREATE (:Person{name: "person4"})
CREATE (:Person{name: "person5"})
...

如果我们在neo4j-shell或Web管理员中执行这些语句,则会得到以下输出:

==> +-------------------+
==> | No data returned. |
==> +-------------------+
==> Nodes created: 500
==> Properties set: 500
==> Labels added: 500
==> 27706 ms

据我了解,之所以需要这么长时间是因为密码创建然后为每个create语句缓存了一个查询计划,因为它无法知道它们实际上是相同的。 由于我经常删除/重新加载数据,因此我想使反馈循环更快一些,因此终于可以应用Michael的建议了。 参数的工作方式是在占位符查询中添加占位符,然后提供在执行查询时应用于验证那些占位符的值。 在这种情况下,似乎最简单的方法是利用neography对正在运行的neo4j服务器执行查询。 如果我们想用参数化名称创建一个人,那么我们将编写以下代码:

require 'neography'

params = { :name => "Mark" }

Neography::Rest.new.execute_query("CREATE (:Person {name: {name} })", params)

如果我们运行查询以检索所有人,我们可以看到他们已经成功创建:

neo4j-sh (0)$ match p:Person return p;
==> +----------------------+
==> | p                    |
==> +----------------------+
==> | Node[1]{name:"Mark"} |
==> +----------------------+
==> 1 row
==> 175 ms

我想传入一个我最初认为可以做到的名称数组,但将params哈希中的值更改为一个数组:

require 'neography'

params = { :name => [] }
(1..500).each do |value|
  params[:name] << "person#{value}"
end

Neography::Rest.new.execute_query("CREATE (:Person {name: {name} })", params)

我进行了一次查询以取回我的500个人,但只有一个人返回:

neo4j-sh (0)$ MATCH p:Person RETURN p
> ;
==> +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值