2016-05-19 1 views
2

Neo4jrbを使用して、RailsアプリケーションでフロントエンドライブラリD3.jsを使用してNeo4jからのデータを視覚化したいとします。たとえば、次のクエリを使用してグラフデータを取得できます。Neo4jrbで "resultDataContents"を設定する方法は?

query = "MATCH path = (a)-[b]->(c) RETURN path" 
result = Neo4j::Session.current.query(query) 

しかし、このクエリは私に必要な正確なデータを提供していません。

Neo4j data visualisation guideによれば、パラメータresultDataContents"graph"に設定する可能性があります。 ( Neo4j documentation「resultDataContents」)

これは私のアプリケーションに必要なものです。 Neo4jrbでこのパラメータを設定する可能性はありますか?そのような結果を得るには別の考え方がありますか?

+0

を私はのNeo4j(旧バージョン)からのノードとの関係を取得するには、いくつかの生のサイファークエリを書かれているが、それが役に立てば幸い: https://github.com/paradite/Graphpedia/blob/master/models/term.js#L476 – paradite

答えて

1

残念ながら現在はありません。 neo4j-core gem(gemが使用する)は、REST形式を抽象化するために構築されました。 "graph"形式は、別の方法でデータを返します。

あなたにはいくつかのオプションがあります。 JSONクエリを自分で作成することもできますし、実行したクエリからノードとリレーションシップを取得し、返される独自のノード/リレーションシップ構造を構築することもできます。 Boltに切り替える場合、これは将来の証明になるかもしれません。あなたがあなたのケースでこれを行う可能性があります

方法:ルビーのわからない

query = "MATCH path = (a)-[b]->(c) RETURN nodes(path) AS nodes, rels(path) AS rels" 
result = Neo4j::Session.current.query(query) 
response = {nodes: [], rels: []} 
result.each do |row| 
    response[:nodes].concat(row.nodes) 
    response[:rels].concat(row.rels) 
end 
response[:nodes].uniq! 
response[:rels].uniq! 
+0

ありがとうございますが、あなたのアイデアにもう一つ問題があります。 'ノード 'は' uuid'によって識別されます。 'rels'の中では、開始ノードと終了ノードは' neo-id 'によって識別されるので、それらを一致させることはできません(例えばD3で使用するため)。 – LimonChillo

+0

あなたは 'neo_id'メソッドを呼び出すことによってノードの' neo_id'を得ることができるはずです –

+0

ありがとう、私はあなたのヒントと素敵な解決策を得ました:) – LimonChillo

関連する問題