apoc.ttl.expireIn
过程 Apoc 扩展
CALL apoc.ttl.expireIn(node,timeDelta,'time-unit') - 通过设置 :TTL 标签和 ttl 属性,在指定时间长度后使节点过期
使用示例
本节中的示例基于以下示例图
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix);
我们可以通过运行以下查询来让任何制作过电影的人过期
MATCH (movie:Movie)<-[produced:PRODUCED]-(person:Person)
CALL apoc.ttl.expireIn(person, 10,'s')
RETURN movie, produced, person;
| movie | produced | person |
|---|---|---|
(:Movie {tagline: "Welcome to the Real World", title: "The Matrix", released: 1999}) |
[:PRODUCED] |
(:Person:TTL {name: "Joel Silver", ttl: 1605698768575, born: 1952} |
此节点(及其关系)将在 1605698768575(撰写本文时起 10 秒后)过期
RETURN datetime({epochMillis: 1605698768575}) AS expiryTime;
| 过期时间 (expiryTime) |
|---|
2020-11-18T11:26:08.575Z |
当下一次过期任务运行时,我们将在 neo4j.log 中看到以下输出
neo4j.log
2020-11-18 11:26:40.357+0000 INFO [apoc] TTL: Expired 1 nodes 1 relationships
如果我们尝试查找我们的制片人
MATCH (movie:Movie)<-[produced:PRODUCED]-(person:Person)
RETURN movie, produced, person;
我们将得不到任何结果
| movie | produced | person |
|---|