gpt4 book ai didi

neo4j - 创建与 py2neo 一起使用的 Neo4j 日期树

转载 作者:行者123 更新时间:2023-12-02 11:52:27 25 4
gpt4 key购买 nike

我正在尝试在 Neo4j 数据库中构建一个日期树,它将与 Nigel Small 的 py2neo 库中的日历模块配合使用。

我使用了 Mark Needham 的起始代码( http://java.dzone.com/articles/neo4j-cypher-creating-time ),但这并没有将所有“年份”节点连接到主日历节点,而这是 py2neo 库所必需的。 (此处的文档:http://book.py2neo.org/en/latest/calendar/)

我修改了 Mark 的代码,尝试创建一个主节点来连接所有年份,如下所示:

CREATE (x:Calendar {name:'master'})
WITH range(2005, 2014) AS years, range(1,12) as months
FOREACH(year IN years |
CREATE (y:Year {year: year})
MERGE (x)-[:YEAR]->(y)
FOREACH(month IN months |
CREATE (m:Month {month: month})
MERGE (y)-[:MONTH]->(m)
FOREACH(day IN (CASE
WHEN month IN [1,3,5,7,8,10,12] THEN range(1,31)
WHEN month = 2 THEN
CASE
WHEN year % 4 <> 0 THEN range(1,28)
WHEN year % 100 <> 0 THEN range(1,29)
WHEN year % 400 <> 0 THEN range(1,29)
ELSE range(1,28)
END
ELSE range(1,30)
END) |
CREATE (d:Day {day: day})
MERGE (m)-[:DAY]->(d))))

发生的情况是,有一个节点(带有日历标签)正在创建,但没有附加任何关系,而有一个节点(没有标签)正在创建并附加到每个“年”节点。

我知道这可能是一个非常简单的修复,但我是 CYPHER 的新手,并且真的很难弄清楚这一点。

最佳答案

您忘记通过WITH传输日历主数据“x”

CREATE (master:Calendar { name:'master' })
WITH range(2005,2014) AS years, range(1,12) AS months,master
FOREACH (year IN years |
CREATE (y:Year { year: year })
MERGE (master)-[:YEAR]->(y)
FOREACH (month IN months |
CREATE (m:Month { month: month })
MERGE (y)-[:MONTH]->(m)
FOREACH (day IN (
CASE
WHEN month IN [1,3,5,7,8,10,12]
THEN range(1,31)
WHEN month = 2
THEN
CASE
WHEN year % 4 <> 0
THEN range(1,28)
WHEN year % 100 <> 0
THEN range(1,29)
WHEN year % 400 <> 0
THEN range(1,29)
ELSE range(1,28) END ELSE range(1,30) END )|
CREATE (d:Day { day: day })
MERGE (m)-[:DAY]->(d))))

关于neo4j - 创建与 py2neo 一起使用的 Neo4j 日期树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com