我有这样的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。
答案 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
这将为您提供一系列结构,通过分别调用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_node.as(:n).comments(:m).pluck(:n, :m)
。