Neo4J中的幂等性检验

Neo4J中的幂等性检验,neo4j,Neo4j,有人知道如何根据现有数据插入Neo4J吗?这是数据摄取的一部分 例如,neo4j中已有一个属性为updatedAt的节点。每当接收到接收数据的新pubsub事件时,我都需要检查neo4j中传入数据和现有节点的updatedAt属性,并决定需要丢弃哪些数据 最后,neo4j应该有一个具有最新updatedAt值的节点 APOC,除了触发器还有别的方法吗 请帮忙。我对Neo4j真的很陌生。谢谢我认为您需要的是密码查询,更准确地说,是将查询与ON CREATE和ON MATCH合并。例如: MERGE

有人知道如何根据现有数据插入Neo4J吗?这是数据摄取的一部分

例如,neo4j中已有一个属性为updatedAt的节点。每当接收到接收数据的新pubsub事件时,我都需要检查neo4j中传入数据和现有节点的updatedAt属性,并决定需要丢弃哪些数据

最后,neo4j应该有一个具有最新updatedAt值的节点

APOC,除了触发器还有别的方法吗


请帮忙。我对Neo4j真的很陌生。谢谢

我认为您需要的是密码查询,更准确地说,是将查询与ON CREATE和ON MATCH合并。例如:

MERGE (n:TYPE_OF_NODE { id: 'ID_OF_NODE_TO_BE_FOUND' })
ON CREATE SET 
    n.createdAt = INPUT_DATE,
    .../* Set other attributes if needed */
ON MATCH SET n.updatedAt = 
    CASE WHEN n.updatedAt < INPUT_DATE THEN INPUT_DATE ELSE n.updatedAt END,
    ... /* Set other attributes if needed */
RETURN n
上面的查询检查是否存在一个给定类型的节点,该节点的类型为\u-of-node,id等于\u-of-node-to-BE-FOUND的id。输入日期是指与接收数据的事件一起接收的日期

如果节点不存在,将创建该节点并设置一些属性 请参见“创建集”。 如果存在,则将对其进行更新,请参阅 在比赛现场。具体来说,updateeat属性将设置为 后面的值,为此我使用CASE语句。
这是一个很好的解决方案,但是否有一种方法可以一次性更新所有属性。我没有一个接一个地更新它,而是使用找到了一个解决方案。使用apoc.do.when.@RahulThampiT你能粘贴一个片段来显示你想如何使用apod.do.when吗?抱歉,我现在在查询中做了一个更新,我正在使用apoc.do.case查询可选匹配n:Node{}CALL apoc.do.case[n为NULL,CREATEm:Node SET RETURN m,n不为NULL,n.updated_at