Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph 如何使用Neo4j查询恢复表格数据?_Graph_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Graph 如何使用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

我将数字表格数据作为关系属性存储在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'}
  ]->(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的博文