Cypher查询和Ruby on Rails

时间:2015-02-04 18:12:58

标签: neo4j

我有这样的Cypher查询:

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)

之后我以任何我想要的方式处理了@result。

1 个答案:

答案 0 :(得分:2)

您可以使用Neo4j::Session.current.query来构建常规Cypher查询。不要再使用START n=node,该语法在将来的版本中无效,因此您应该使用MATCH (n) WHERE ID(n) =

query = "MATCH (n)-[:has_comments]->(m) WHERE ID(n) = #{id} RETURN n, m"
result = Neo4j::Session.current.query(query).to_a

这将为您提供一系列结构,通过分别调用nm方法可以访问您的结果。我不建议你这样做。作为替代方案,您可以这样做:

result = Neo4j::Session.current.query.match("(n)-[:has_comments]->(m)").where("ID(n) = {id}").params(id: id).return(:n, :m)

您将以相同的方式访问数据:nm方法。

我也不建议你这样做。您正在使用Rails和ActiveNode,因此您应该拥有模型并且能够n_node.as(:n).comments(:m).pluck(:n, :m)