密码如何从其他节点的子串创建唯一节点

cypher how to create unique nodes from substring of other nodes

我是 Cypher 和 Neo4j 的新手。我有一组标记为 "Line" 的节点,每行都是一个长字符串,例如: 0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999

我关心的有两个子字符串:yeartemp

match(l:Line)
return toInteger(substring(l.line,15,4)) as year, toInteger(substring(l.line,87,5)) as temp
limit (5)

为了给:

year    temp

1941    44

1942    90

1942    12

1948    100

1948    -21

我需要为每个唯一的年份值创建一组标记为 "Year" 的节点,为每个唯一的温度读数创建一组标记为 "Temp" 的节点。我还需要使用关系 has_temp 将每年与其温度读数相关联。 (然后按年份的 desc 排序顺序打印年份、临时读数和关系类型。

如有任何帮助,我们将不胜感激。

试试这个:

match(l:Line) 
with toInteger(substring(l.line,15,4)) as year, 
toInteger(substring(l.line,87,5)) as temp
MERGE (y:Year{value:year})
MERGE (t:Temp{value:temp})
MERGE (y)-[s:has_temp]->(t)
RETURN year,temp,type(s) as rel_type order by year desc

如果您想稍后检查它是如何导入节点的,您可以这样做:

MATCH (y:Year)-[r]->(t:Temp)
RETURN y.value as year,t.value as temp,type(r) as re_tzpe order by year desc