2016-05-19 28 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

不知道紅寶石,但我已經寫了一些生的Cypher查詢檢索的Neo4j(舊版本)節點和關係,希望它幫助: https://github.com/paradite/Graphpedia/blob/master/models/term.js#L476 – paradite

回答

1

不幸的是目前沒有。創建neo4j-core寶石(其中使用了neo4j寶石)以抽象出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

相關問題