【问题标题】:Delete old nodes and relationships with Cypher in Neo4j 1.9在 Neo4j 1.9 中删除旧节点和与 Cypher 的关系
【发布时间】:2013-06-10 22:54:42
【问题描述】:

我在 HA 模式下使用 Neo4j 1.9 M03,我的挑战是删除所有节点和关系以及早于某个日期的索引。

为此,我为节点和关系创建了一个属性。该属性是“YYMMDD”格式的日期戳。

我正在尝试使用以下 Cypher 查询来执行上述操作:

START n0=node(0), nx=node(*) 
MATCH n0-[r0?]-(), nx-[rx?]-() 
WHERE nx <> n0 AND HAS (nx.datestamp) AND nx.datestamp <= yyyymmdd 
OR HAS (rx.datestamp) AND rx.datestamp <= yyyymmdd
DELETE r0,rx,nx

此查询未执行我想要的操作。 我在这里做错了什么?

【问题讨论】:

  • 你的日期是字符串吗?

标签: neo4j cypher nodes relationships


【解决方案1】:

你可以试试这个

START n=node(*) 
MATCH n-[r?]-() 
WHERE  (n.datestamp? <= yyyymmdd AND r.datestamp? <= yyyymmdd) 
DELETE r,n

【讨论】:

  • 看起来不错,但即使在删除节点/关系后,指标“数据库磁盘使用率”仍在增加...
【解决方案2】:
START rx=rel(*)
WHERE HAS (rx.datestamp) AND rx.datestamp <= yyyymmdd
DELETE rx;

您必须确保要删除的节点没有任何关系,要么过滤掉它们,要么另外删除它们

START nx=node(*)
WHERE HAS (nx.datestamp) AND nx.datestamp <= yyyymmdd
AND NOT((nx)--())
DELETE nx;

【讨论】:

  • 非常感谢迈克尔。但是,Neo4j 数据库中占用的空间保持不变。节点和关系是否被删除了?在 Neo4j 网络管理员中,我运行 Neo4j Cypher 查询来计算所有删除的节点和关系,这些节点和关系早于某个日期戳,查询结果是 0 个节点和/或 0 个关系。
  • Michael 这个密码查询没有删除节点/关系属性,对吧?我怎样才能删除节点/关系属性?即使在删除节点/关系之后,指标“数据库磁盘使用情况”也会继续增加。提前致谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多