Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 在节点上执行基于时间的操作_Neo4j - Fatal编程技术网

Neo4j 在节点上执行基于时间的操作

Neo4j 在节点上执行基于时间的操作,neo4j,Neo4j,如何在neo4j中的特定时间后触发要在节点上执行的操作(将属性设置为something) 我知道,但它只在时间结束时删除节点或关系,这不是我想要的?您可以结合使用和过程。例如,首先添加触发器: CALL apoc.trigger.add('doVertexTask', ' UNWIND {deletedRelationships} AS dRel WITH dRel WHERE type(dRel) = "taskRelation" WITH endNode(

如何在neo4j中的特定时间后触发要在节点上执行的操作(将属性设置为something)


我知道,但它只在时间结束时删除节点或关系,这不是我想要的?

您可以结合使用和过程。例如,首先添加触发器:

CALL apoc.trigger.add('doVertexTask', '
      UNWIND {deletedRelationships} AS dRel
      WITH dRel WHERE type(dRel) = "taskRelation"
      WITH endNode(dRel) AS vertexNode WHERE "Vertex" IN labels(vertexNode)
      SET vertexNode.prop = rand()
      RETURN true', 
    {phase: "before"})
然后添加数据和任务:

MERGE (A:Vertex {id: 1})
CREATE (T:TASK)
CREATE (T)-[:taskRelation]->(A)
WITH A, T
CALL apoc.date.expireIn(T, 10, 's')
RETURN A, T

您需要
apoc.periodic.schedule
过程:我认为apoc.periodic.schedule将多次运行该语句,对吗?我希望该语句在任务每秒钟运行一次时运行一次,检查所需时间的开始时间,如果它已到达:启动查询并删除任务(
apoc.periodic.cancel
)。您还可以使用
apoc.date.expire
apoc.trigger
procedures.apoc.periodic.cancel-可能我有10000个(或更多)节点需要在不同的时间段后失效,性能问题如何?我尝试过,但没有属性(
SET vertexNode.prop=rand()
)10秒后在节点
A:Vertex
上设置。它对我有效。检查apoc.trigger和apoc.date.expireIn的所有必要配置设置(neo4.conf)。当我启用这些过程时,它最终使用
apoc.trigger.add
apoc.date.expireIn
的组合工作。谢谢,但还有一件事,我不明白这行
作为dRel展开{deletedRelationships}。我原以为
:taskRelation
关系将被删除,但它没有被删除,因为当我
匹配
关系时,即使设置了
道具
,它仍会显示连接的
:Task
:Vertex
节点。这也是我需要的,但我只是想了解是什么触发了该操作。@Emmanuel这很奇怪,因为必须删除过期的节点。尝试查看日志-如果有任何错误消息。是的,没错,过期的节点已被删除。现在我明白了。