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