【发布时间】:2021-03-04 21:47:48
【问题描述】:
我正在将一些节点导出到 CSV,并且我想指定要导出的字段、标题中的列(字段)名称,以及将一些时间戳转换为“人类可读”的字符串。我以前使用过一个子查询并将其传递给 apoc.export.csv.query() 函数,但是当我有许多不同类型的节点时,我看不到一个简单的方法来做到这一点。理想情况下,我还想通过将主键放在由关系类型标记的列中来表达关系。举个例子:
假设我只有两种节点类型:Apples 和 Boxes。有些 Box 节点与 Apple 节点没有“:HAS”关系,有些则有多个。此查询获取我想要的值,但没有按照我需要的方式格式化它们:
MATCH (a:Apple) MATCH (b:B)-[:HAS]->(ab:Apple)
WITH [a.pk, a.type, a.name, "", ""] AS list1,
[b.pk, b.type, b.name, ab.pk, b.field1] AS list2
UNWIND list1 + list2 AS item RETURN item;
| item |
|---|
| 1314757 |
| Red Delicious |
| Fuji |
| "" |
| 7462518 |
| Box1 |
| 9686463 |
| 1472641 |
我希望他们的安排是这样的:
| pk | type | name | HAS Apple (pk) | field1 |
|---|---|---|---|---|
| 1314757 | Apple | Braeburn | ||
| 7462518 | Apple | Gala | ||
| 3010653 | Apple | Fuji | ||
| 9686463 | Box | Box1 | 1472641 | fieldval |
| 9686463 | Box | Box2 | 7462518 | fieldval |
| 4726110 | Apple | Red Delicious |
有没有一种方法可以让我只使用 cypher/apoc 以这种格式获取它们?它们不需要按字母顺序排列。
【问题讨论】:
标签: csv neo4j cypher neo4j-apoc