【问题标题】:How to recover tabular data using a Neo4j query?如何使用 Neo4j 查询恢复表格数据?
【发布时间】:2015-08-28 17:56:23
【问题描述】:

我已将数字表格数据作为关系属性存储在 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

但我想以表格形式并以正确的顺序恢复数据。

有人有什么建议吗?

【问题讨论】:

  • 您希望返回的数据看起来如何?您可以RETURN g.etr, r2.Method, r2.time 等,以打破属性。以及您喜欢按什么顺序排列数据?
  • 我想恢复时间序列,但在列名和矩阵中的数值中使用单词“时间”time_t_35 time_t9 time_t14 time_t31 time_t224 中的正则表达式。

标签: graph neo4j cypher graph-databases


【解决方案1】:

鉴于 Cypher 当前的功能,您可能无法使用当前的数据模型做您想做的事情。部分问题在于,如果不硬编码(在您的查询中)属性名称,就无法获取属性值。问题的另一部分是属性键不一定按原始顺序(或任何可预测的顺序)返回。

相反,您可以通过更改存储表格数据的方式来解决这些问题。

例如,假设您以这种方式存储一个节点(请注意,集合是按所需顺序存储的):

MATCH (g:GNE),(p:EXP)
WHERE g.etr='5313' AND p.NExp='Bos_RM'
CREATE UNIQUE
  (p)-[r:Was_norm {
    Method:'NULL',
    times: [    9,    14,   31,  224],
    values:[6.587, 5.708, 6.89, 4.842]
  }]->(g)

鉴于上述数据模型,您可以轻松地将表格数据作为 2 个单独的数组返回:

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;

上述查询 (see this console) 的结果如下所示:

+-------------------------------------------------------------------------------------------------------+
| g.etr  | table                                                                                        |
+-------------------------------------------------------------------------------------------------------+
| "5313" | [{time=9, value=6.587},{time=14, value=5.708},{time=31, value=6.89},{time=224, value=4.842}] |
+-------------------------------------------------------------------------------------------------------+

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2014-01-13
  • 1970-01-01
相关资源
最近更新 更多