如何使用密码

时间:2015-11-09 16:41:47

标签: neo4j cypher

我正在尝试删除系统中存在超过2小时的所有关系。

每次创建关系时,我都会添加属性时间戳。

我正在尝试创建一个计划流程,删除他们创建的日期超过2小时的所有关系。

所以我正在寻找这样的东西:

*假设reportDate是mili的时间戳 * 7200000 - 毫秒2小时

match (p1:C9)-[r:follow]->(p2:C9) 
where (r.reportDate - 1447073161751) > 7200000
delete r

它没有用。来自Cypher的错误:

Don't know how to Subtract(r.reportDate,{  AUTOINT0}) `1447073161751` with `1447090476190`

我应该如何调整我的where子句以符合我的要求?

谢谢, 射线。

1 个答案:

答案 0 :(得分:1)

reportDate的值如何? 1447073161751代表什么? reportDate的数据类型是什么?

  • 如果是字符串,则需要int
  • 转换为TOINT()

首先尝试选择节点:

MATCH (p1:C9)-[r:follow]->(p2:C9) 
WHERE (r.reportDate - 1447073161751) > 7200000 
RETURN p1, r, p2

Cypher毫无问题地为我工作。

以下是我尝试的示例:

字符串数据类型

的版本

创建

CREATE (p1:C9)-[r:follow {reportDate: "123"}]->(p2:C9)

删除

MATCH (p1:C9)-[r:follow]->(p2:C9) 
WHERE (TOINT(r.reportDate) - 100) > 20 
DELETE r

检查

MATCH (p1:C9)-[r:follow]->(p2:C9) 
WHERE (TOINT(r.reportDate) - 100) > 20 
RETURN r

具有整数数据类型的版本

创建

CREATE (p1:C9)-[r:follow {reportDate: 123}]->(p2:C9)

删除

MATCH (p1:C9)-[r:follow]->(p2:C9) 
WHERE (r.reportDate - 100) > 20 
DELETE r

检查

MATCH (p1:C9)-[r:follow]->(p2:C9) 
WHERE (r.reportDate - 100) > 20 
RETURN r