簡體   English   中英

為什么neo4j查詢會不按順序返回東西,我該如何按順序排列東西?

[英]Why does a neo4j query return things out of order and how do I put things in order?

我希望Neo4J查詢返回的數據以相同的順序列出每個條目(數據1是第一個,數據2是第二個,或者至少是一個一致的順序)。我執行了一個查詢以返回一堆相同類型的節點,結果出:

節點1:數據1,數據2

節點2:數據1,數據2

節點3:數據2,數據1

節點4:Data2,Data1

等等等等。 為什么屬性按隨機順序排列,我該如何解決?

編輯:

我用它來創建節點:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'filepath' AS row
CREATE (:Node {Data1: row.Data1, Data2: row.Data2})

然后,我使用了以下查詢:

MATCH (n:Node) RETURN n LIMIT 25

它返回正確的18行,但是某些節點以不同的順序列出了屬性。

我可能是錯的,但是查詢中缺少ORDER BY子句,我聽說過的任何查詢語言(包括密碼)都不能保證任何特定的排序。

neo4j中的節點是映射(屬性名稱鍵); 通常,除非您使用特定類型的地圖,否則地圖/哈希表不保證鍵的順序。

我認為對於大多數數據查詢語言來說,依靠隱式排序並不是一個好主意。 例如,如果您只執行MATCH n RETURN n ,則n節點將以什么順序返回? 創建順序? 最后更新順序? 通過數字編號? 我認為答案是“永遠不要假設,請使用ORDER BY ”。

如果需要順序一致,請使用ORDER BY

您可以執行以下操作:

MATCH n 
WITH id(n) as idn, keys(n) as kz unwind kz as items 
RETURN idn, items 
ORDER BY idn, items;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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