Neo4j Cypher查询和Ruby on Rails

Neo4j Cypher查询和Ruby on Rails,neo4j,Neo4j,我有这样一个密码查询: start n=node(*) match n-[:has_comments]->(m) return n,m; 哪个运行正常。 我如何从RoR运行此操作? 当使用Postgres和ActiveModel时,在控制器中我可以使用类似的东西 @query = "SELECT * FROM <table> WHERE <condition>;" @result = <ClassName>.connection.execute(@qu

我有这样一个密码查询:

start n=node(*) match n-[:has_comments]->(m) return n,m;
哪个运行正常。 我如何从RoR运行此操作? 当使用Postgres和ActiveModel时,在控制器中我可以使用类似的东西

@query = "SELECT * FROM <table> WHERE <condition>;"
@result = <ClassName>.connection.execute(@query)
@query=“从何处选择*
@结果=.connection.execute(@query)

在那之后,我以我想要的方式处理@result。

您可以使用
Neo4j::Session.current.query
来构建通用的密码查询。不要再使用
START n=node
,这种语法在将来的版本中无效,因此应该改用
MATCH(n),其中ID(n)=

query = "MATCH (n)-[:has_comments]->(m) WHERE ID(n) = #{id} RETURN n, m"
result = Neo4j::Session.current.query(query).to_a
这将为您提供一个结构数组,通过分别调用
n
m
方法可以访问结果。我根本不建议你这样做。作为替代方案,您可以执行以下操作:

result = Neo4j::Session.current.query.match("(n)-[:has_comments]->(m)").where("ID(n) = {id}").params(id: id).return(:n, :m)
您将以相同的方式访问数据:
n
m
方法


我也不建议你那样做。您使用的是Rails和ActiveNode,因此您应该有模型,并且能够执行
n_节点.as(:n).comments(:m).pulk(:n,:m)

我将对它们进行测试,以便稍后的查询记住,您可以执行
Neo4j::Session.current.query.match(n:{neo_id:id}).match(“n-[:has_comments]->(m)”。返回(:n,:m)
更简洁一点,我正在尝试测试第三个建议,我同时使用ActiveNode和ActiveRel,并运行n_node.as(:n).comments(:m).pulk(:n,:m)从控制台我收到了以下错误:NameError:未定义的局部变量或main:Object from(irb):119I的方法“n_node”。如果您愿意,可以发布github摘要,但请不要将代码添加到我的帖子中,它似乎来自我。好的,这个错误如何?n_node.as(:n).comments(:m).pull(:n,:m)NameError:未定义的局部变量或main:Object的方法'n_node'