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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Neo4j:收集多个值

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Neo4j:收集多个值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Neo4j的密碼查詢語言中,我最喜歡的功能之一是COLLECT,它使我們能夠將項目分組到一個數組中以備后用。

但是,我注意到人們有時很難弄清楚如何使用COLLECT收集多個項目,并且很難找到一種方法。

考慮以下數據集:



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)

如果我們想返回每個人以及他們參加的活動名稱的集合,我們可以編寫以下內容:

$ 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:收集多个值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。