簡體   English   中英

Neo4J 2.0如何重構數據庫以引入Date節點

[英]Neo4J 2.0 How to refactor the database to introduce Date nodes

我有現成的,我剛剛從SQL數據庫導入的數據庫,用於如讓叫它Order已性質稱為PlacedOn類型的DateTime存儲為看起來像節點的一部分2013-05-01T02:15:18+00:00

我現在正在尋找提取日期時間並創建一個關聯,以便能夠輕松查詢一個月或一年的所有Orders

基本上我要實現的是使關聯如下所示:

(o:Order)-[:PLACED_ON]->(d:Day)-[:BELONGS_TO]->(m:Month)-[:BELONGS_TO]->(y:Year)

對於性能測試,我已經創建了1100000 nodes ,因此必須將其加載到我的C#代碼中並創建它是不實際的,因此Cypher或Webadmin中的任何其他方式都可以讓我提取月份和年份分離並創建具有上述關聯的節點。

問候基蘭

請查看此Cypher查詢,以在Neo4j 2.0中創建DateTime樹:

https://gist.github.com/kbastani/8519557#file-calendaryear-cql

為每年的數據運行CalendarYear Cypher腳本。

您需要解析DateTime時間戳值以提取Year,Month和Day整數值。 然后,對於每個訂單,您都需要附加一個日節點。 我的建議是,當您導入數據時,需要在訂單中添加具有Year,Month,Day值的屬性。

然后分批運行一個Cypher語句以添加到您的時間軸中,按每年的每個月添加記錄:

MATCH (order:Order { month: 5, year: 2014 })
WITH collect(order) as orders
FOREACH (order in orders |
    MERGE (day:Day { day: order.day, month: order.month, year: order.year })
    CREATE (day)<-[:PLACED_ON]-(order))

現在,您可以使用時間軸索引查詢數據。

MATCH (order:Order)-[:PLACED_ON]->(day:Day { day: 1, month: 5, year: 2013 })
RETURN order

暫無
暫無

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

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