簡體   English   中英

CYPHER - 按原始順序返回鏈接節點

[英]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

這是我的查詢結果以圖表形式顯示的內容 -

在此處輸入圖像描述

但是,一旦使用上述查詢進行查詢並獲得物理響應,它就會按以下順序表示 -

  • 文件夾 4
  • 文件夾 5
  • 文件夾 3
  • 文件夾 2
  • 文件夾 1
╒══════════════════════════════════════════════════════════════════════╕
│"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM