创建将与py2neo一起使用的Neo4j日期树
我正在尝试在我的Neo4j数据库中构建一个日期树,它将与Nigel Small的py2neo库中的日历模块一起工作 我使用了Mark Needham的起始代码from here(),但这并没有将所有年份节点连接到主日历节点,这是py2neo库所必需的。(这里的文档:) 我修改了Mark的代码,尝试创建一个主节点来连接所有年份,如下所示:创建将与py2neo一起使用的Neo4j日期树,neo4j,cypher,py2neo,Neo4j,Cypher,Py2neo,我正在尝试在我的Neo4j数据库中构建一个日期树,它将与Nigel Small的py2neo库中的日历模块一起工作 我使用了Mark Needham的起始代码from here(),但这并没有将所有年份节点连接到主日历节点,这是py2neo库所必需的。(这里的文档:) 我修改了Mark的代码,尝试创建一个主节点来连接所有年份,如下所示: CREATE (x:Calendar {name:'master'}) WITH range(2005, 2014) AS years, range(1,12)
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))))
CREATE(x:Calendar{name:'master'})
范围(2005、2014)为年,范围(1、12)为月
FOREACH(以年为单位)
创建(y:Year{Year:Year})
合并(x)-[:年]->(y)
FOREACH(月中月)
创建(m:Month{Month:Month})
合并(y)-[:月]->(m)
在(情况)中,每(天)
当月份在[1,3,5,7,8,10,12]时,则范围为(1,31)
当月份=2时,则
案例
当第%4年为0时,则范围为(1,28)
当年份%100时,则范围为(1,29)
当年份为%400时,则范围为(1,29)
ELSE范围(1,28)
结束
ELSE范围(1,30)
完)
创建(d:Day{Day:Day})
合并(m)-[:天]->(d)))
发生的情况是,有一个节点(带有日历标签)正在创建,但没有连接到它的关系,而有一个节点(没有标签)正在创建并连接到每个年度节点
我知道这可能是一个非常简单的修复方法,但我对CYPHER还不熟悉,所以我很难弄清楚这一点。您忘了用
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))))
CREATE(主机:日历{name:'master'})
范围(20052014)为年,范围(1,12)为月,主
FOREACH(以年为单位)
创建(y:Year{Year:Year})
合并(主)-[:年]->(y)
FOREACH(月中月)
创建(m:Month{Month:Month})
合并(y)-[:月]->(m)
每日(
案例
当月份在[1,3,5,7,8,10,12]时
然后范围(1,31)
当月份=2时
然后
案例
当年份%4 0
然后范围(1,28)
当年份%100 0
然后范围(1,29)
当年份%400 0
然后范围(1,29)
其他范围(1,28)结束其他范围(1,30)结束)
创建(d:Day{Day:Day})
合并(m)-[:天]->(d)))
我花了几分钟才看到您在第2行中所做的更改;我现在明白了。谢谢