[英]CYPHER - Return linked nodes in original order
我真的很享受 Graph 和 Cypher 查詢語言(來自 RDBMS 背景)的潛在力量,但我真的很難理解所涉及的一些概念!
我正在嘗試做的事情感覺應該相對簡單......我有一個非常簡單的五個節點系列,具有父->子關系。 在我看來,如果我要查詢這個,每個節點都應該以適當的順序返回。 這是目前的查詢 -
MATCH p = (:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })
WITH NODES(p) AS folders
UNWIND folders as folder
WITH folder RETURN DISTINCT folder
這是我的查詢結果以圖表形式顯示的內容 -
但是,一旦使用上述查詢進行查詢並獲得物理響應,它就會按以下順序表示 -
╒══════════════════════════════════════════════════════════════════════╕
│"folder" │
╞══════════════════════════════════════════════════════════════════════╡
│{"name":"Folder 4","created_at":"2019-10-07 12:14:07","id":"5b6b3316-e│
│e57-3ca5-8f62-bed81b09ab7b","updated_at":"2019-10-07 12:14:07","parent│
│_folder_id":"2dabecfc-2018-3876-bc01-28922ebbb09d"} │
├──────────────────────────────────────────────────────────────────────┤
│{"name":"Folder 5","created_at":"2019-10-07 12:14:07","id":"1d05a36b-a│
│67f-3fe7-a13a-6f12b1a38d26","updated_at":"2019-10-07 12:14:07","parent│
│_folder_id":"5b6b3316-ee57-3ca5-8f62-bed81b09ab7b"} │
├──────────────────────────────────────────────────────────────────────┤
│{"name":"Folder 3","created_at":"2019-10-07 12:14:07","id":"2dabecfc-2│
│018-3876-bc01-28922ebbb09d","updated_at":"2019-10-07 12:14:07","parent│
│_folder_id":"a1344b93-ab69-398d-81c5-cb901ff8f0b0"} │
├──────────────────────────────────────────────────────────────────────┤
│{"name":"Folder 2","created_at":"2019-10-07 12:14:07","id":"a1344b93-a│
│b69-398d-81c5-cb901ff8f0b0","updated_at":"2019-10-07 12:14:07","parent│
│_folder_id":"a22eca18-57fd-364d-b965-d850724131e8"} │
├──────────────────────────────────────────────────────────────────────┤
│{"name":"Folder 1","created_at":"2019-10-07 12:14:07","id":"a22eca18-5│
│7fd-364d-b965-d850724131e8","updated_at":"2019-10-07 12:14:07"} │
└──────────────────────────────────────────────────────────────────────┘
我怎么可能 go 關於訂購這些數據,還是我的查詢需要完全重寫?
謝謝!
你可以試試這個查詢:
MATCH p = (n:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })
WHERE NOT ()-[:CHILD]->(n)
WITH NODES(p) AS folders
RETURN folders
我認為您的問題來自多個路徑p
的事實,這就是您使用distinct
的原因。
不要忘記,如果您要求數據庫查找模式(n:Folder)-[:CHILD*]->(f:Folder { id: '1d05a36b-a67f-3fe7-a13a-6f12b1a38d26' })
,數據庫將給出你所有的可能性,所以在你的例子中:
F4 -> F5
F3 -> F4 -> F5
F2 -> F3 -> F4 -> F5
F1 -> F2 -> F3 -> F4 -> F5
如果你對這個結果集做一個distinct
的,是的,你有結果F4, F5, F3, F2, F1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.