Neo4j:收集多个值
生活随笔
收集整理的這篇文章主要介紹了
Neo4j:收集多个值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Neo4j的密碼查詢語言中,我最喜歡的功能之一是COLLECT,它使我們能夠將項目分組到一個數組中以備后用。
但是,我注意到人們有時很難弄清楚如何使用COLLECT收集多個項目,并且很難找到一種方法。
考慮以下數據集:
如果我們想返回每個人以及他們參加的活動名稱的集合,我們可以編寫以下內容:
$ MATCH (p:Person)-[:EVENT]->(e) > RETURN p, COLLECT(e.name); +--------------------------------------------+ | p | COLLECT(e.name) | +--------------------------------------------+ | Node[0]{name:"Mark"} | ["Event1","Event2"] | +--------------------------------------------+ 1 row效果很好,但是如果我們要收集事件名稱和時間戳,但又不想返回整個事件節點,該怎么辦?
我見過一些人在研討會上嘗試過的方法如下:
MATCH (p:Person)-[:EVENT]->(e) RETURN p, COLLECT(e.name, e.timestamp)不幸的是,這不能編譯:
SyntaxException: Too many parameters for function 'collect' (line 2, column 11) "RETURN p, COLLECT(e.name, e.timestamp)"^正如錯誤消息所暗示的那樣,COLLECT函數僅接受一個參數,因此我們需要找到另一種解決問題的方法。
一種方法是將兩個值放入文字數組中,這將導致將數組作為返回結果:
$ MATCH (p:Person)-[:EVENT]->(e) > RETURN p, COLLECT([e.name, e.timestamp]); +----------------------------------------------------------+ | p | COLLECT([e.name, e.timestamp]) | +----------------------------------------------------------+ | Node[0]{name:"Mark"} | [["Event1",1234],["Event2",4567]] | +----------------------------------------------------------+ 1 row這種方法的煩人之處在于,當您添加更多項目時,您會忘記將每條數據放在哪個位置,因此我認為更可取的方法是收集項目圖:
$ MATCH (p:Person)-[:EVENT]->(e) > RETURN p, COLLECT({eventName: e.name, eventTimestamp: e.timestamp}); +--------------------------------------------------------------------------------------------------------------------------+ | p | COLLECT({eventName: e.name, eventTimestamp: e.timestamp}) | +--------------------------------------------------------------------------------------------------------------------------+ | Node[0]{name:"Mark"} | [{eventName -> "Event1", eventTimestamp -> 1234},{eventName -> "Event2", eventTimestamp -> 4567}] | +--------------------------------------------------------------------------------------------------------------------------+ 1 row在本周早些時候運行的Clojure Neo4j Hackathon期間,這被證明是一種特別令人愉悅的方法,因為我們可以輕松地在Clojure代碼中破壞地圖集合。
翻譯自: https://www.javacodegeeks.com/2014/10/neo4j-collecting-multiple-values.html
總結
以上是生活随笔為你收集整理的Neo4j:收集多个值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 休眠字节码增强
- 下一篇: 外滩大会:开源催化创新 顶尖社区开源人共