Graph 如何使用Neo4j查询恢复表格数据?
我将数字表格数据作为关系属性存储在Neo4j数据库中。我想恢复表格形式的数据 例如,一个节点存储如下:Graph 如何使用Neo4j查询恢复表格数据?,graph,neo4j,cypher,graph-databases,Graph,Neo4j,Cypher,Graph Databases,我将数字表格数据作为关系属性存储在Neo4j数据库中。我想恢复表格形式的数据 例如,一个节点存储如下: MATCH (g:GNE),(p:EXP) WHERE g.etr='5313' AND p.NExp='Bos_RM' CREATE UNIQUE (p)-[r:Was_norm {Method:'NULL', time_t_35: '6.04',time_t9: '6.587',time_t14: '5.708',time_t31: '6.89',time_t224: '4.842
MATCH (g:GNE),(p:EXP)
WHERE g.etr='5313' AND p.NExp='Bos_RM'
CREATE UNIQUE (p)-[r:Was_norm
{Method:'NULL', time_t_35: '6.04',time_t9: '6.587',time_t14: '5.708',time_t31: '6.89',time_t224: '4.842'}
]->(g)
我尝试过这样的查询:
MATCH (g:GNE)-[r1:Was_sel]-(e:EXP)-[r2:Was_norm]-(g)
WHERE e.NExp = 'Bos_SM'
RETURN g.etr,r2
+-------------------------------------------------------------------------------------------------------+
| g.etr | table |
+-------------------------------------------------------------------------------------------------------+
| "5313" | [{time=9, value=6.587},{time=14, value=5.708},{time=31, value=6.89},{time=224, value=4.842}] |
+-------------------------------------------------------------------------------------------------------+
但是我想以表格的形式恢复数据,并以正确的顺序恢复
有人有什么建议吗?考虑到Cypher当前的功能,可能无法对当前的数据模型执行您想要的操作。部分问题在于,如果不(在查询中)对属性名称进行硬编码,就无法获取属性值。问题的另一部分是属性键不一定按原始顺序(或任何可预测的顺序)返回 相反,您可以通过更改表格数据的存储方式来解决这些问题 例如,假设以这种方式存储节点(请注意,集合是按所需顺序存储的): 鉴于上述数据模型,您可以轻松地将表格数据作为两个单独的数组返回:
MATCH (g:GNE)-[r:Was_norm]->(p:EXP)
WHERE g.etr='5313' AND p.NExp='Bos_RM'
RETURN g.etr, r.times, r.values;
或者,如果要在单个阵列中获取数据:
MATCH (g:GNE)-[r:Was_norm]->(p:EXP)
WHERE g.etr='5313' AND p.NExp='Bos_RM'
RETURN g.etr,
REDUCE(s =[], i IN RANGE(0,LENGTH(r.times)-1) | s + { time: r.times[i], value: r.values[i]}) AS table;
上述查询()的结果如下所示:
MATCH (g:GNE)-[r1:Was_sel]-(e:EXP)-[r2:Was_norm]-(g)
WHERE e.NExp = 'Bos_SM'
RETURN g.etr,r2
+-------------------------------------------------------------------------------------------------------+
| g.etr | table |
+-------------------------------------------------------------------------------------------------------+
| "5313" | [{time=9, value=6.587},{time=14, value=5.708},{time=31, value=6.89},{time=224, value=4.842}] |
+-------------------------------------------------------------------------------------------------------+
您希望返回的数据的外观如何?您可以
返回g.etr、r2.Method、r2.time等来分解属性。您想对数据进行什么排序?我想恢复时间序列,但在列名和矩阵中的数值中使用单词“time”time\u t\u 35 time\u t9 time\u t14 time\u t31 time\u t224
中的正则表达式。您可以以映射(名称-值对)的形式获取属性如果您直接返回nodes/rels,我就写了一篇关于如何将密码响应转换为CSV的博文