neo4j set 多个值_Neo4j:收集多个值
neo4j set 多個(gè)值
在Neo4j的密碼查詢語言中,我最喜歡的功能之一是COLLECT,它使我們能夠?qū)㈨?xiàng)目分組到一個(gè)數(shù)組中以備后用。
但是,我注意到人們有時(shí)難以確定如何使用COLLECT收集多個(gè)項(xiàng)目,并且很難找到一種方法。
考慮以下數(shù)據(jù)集:
如果我們想返回每個(gè)人以及他們參加的活動(dòng)名稱的集合,我們可以編寫以下內(nèi)容:
$ MATCH (p:Person)-[:EVENT]->(e) > RETURN p, COLLECT(e.name); +--------------------------------------------+ | p | COLLECT(e.name) | +--------------------------------------------+ | Node[0]{name:"Mark"} | ["Event1","Event2"] | +--------------------------------------------+ 1 row效果很好,但是如果我們要收集事件名稱和時(shí)間戳,但又不想返回整個(gè)事件節(jié)點(diǎn),該怎么辦?
我見過一些人在研討會(huì)上嘗試過的方法如下:
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)"^正如錯(cuò)誤消息所暗示的那樣,COLLECT函數(shù)僅接受一個(gè)參數(shù),因此我們需要尋找另一種解決問題的方法。
一種方法是將兩個(gè)值放入文字?jǐn)?shù)組中,這將導(dǎo)致將數(shù)組作為返回結(jié)果:
$ 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這種方法的煩人之處在于,當(dāng)您添加更多項(xiàng)目時(shí),您會(huì)忘記將每條數(shù)據(jù)放在哪個(gè)位置,因此,我認(rèn)為一種更好的方法是收集項(xiàng)目圖:
$ 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在本周早些時(shí)候運(yùn)行的Clojure Neo4j Hackathon中 ,這被證明是一種特別令人愉悅的方法,因?yàn)槲覀兛梢暂p松地在Clojure代碼中破壞地圖集合。
翻譯自: https://www.javacodegeeks.com/2014/10/neo4j-collecting-multiple-values.html
neo4j set 多個(gè)值
總結(jié)
以上是生活随笔為你收集整理的neo4j set 多个值_Neo4j:收集多个值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 庾怎么读 庾汉字百科
- 下一篇: Apache Kafka消费者再平衡