有人知道如何根据现有数据插入Neo4J吗?这是数据摄取的一部分。
例如,neo4j中已经存在一个具有属性updatedAt
的节点。每当接收到要接收数据的新pubsub事件时,我都需要检查传入数据和neo4j中现有节点的updatedAt
属性,并确定需要丢弃哪些数据。
最后,neo4j应该有一个具有最新updatedAt
值的节点。
除了触发器,APOC还有其他方法吗?
请帮助。我真的是Neo4j的新手。谢谢
[我认为您正在寻找的是Cypher MERGE查询,更确切地说是MERGE
和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
上面的查询检查是否存在给定类型为TYPE_OF_NODE且id
等于ID_OF_NODE_TO_BE_FOUND的节点。在[[INPUT_DATE之前,我指的是某个接收到的日期以及一个摄取数据的事件。
ON CREATE SET
)。 ON MATCH SET
)。具体来说,updateAt
属性将设置为后来的值,为此,我使用了CASE
语句。