日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

neo4j set 多个值_Neo4j:收集多个值

發(fā)布時(shí)間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 neo4j set 多个值_Neo4j:收集多个值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

neo4j set 多個(gè)值

在Neo4j的密碼查詢語言中,我最喜歡的功能之一是COLLECT,它使我們能夠?qū)㈨?xiàng)目分組到一個(gè)數(shù)組中以備后用。

但是,我注意到人們有時(shí)難以確定如何使用COLLECT收集多個(gè)項(xiàng)目,并且很難找到一種方法。

考慮以下數(shù)據(jù)集:



create (p:Person {name: "Mark"}) create (e1:Event {name: "Event1", timestamp: 1234}) create (e2:Event {name: "Event2", timestamp: 4567})create (p)-[:EVENT]->(e1) create (p)-[:EVENT]->(e2)

如果我們想返回每個(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。