密码如何从其他节点的子串创建唯一节点
cypher how to create unique nodes from substring of other nodes
我是 Cypher 和 Neo4j 的新手。我有一组标记为 "Line" 的节点,每行都是一个长字符串,例如:
0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
我关心的有两个子字符串:year
和 temp
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
我是 Cypher 和 Neo4j 的新手。我有一组标记为 "Line" 的节点,每行都是一个长字符串,例如:
0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
我关心的有两个子字符串:year
和 temp
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