Nebula Graph批量upsert应该怎么操作呢?

image

最近正在调研Nebula Graph的功能,想请问Nebula如何实现批量数据upsert的操作呢?
eg.
数据库里有一个Tag数据
属性lastUpdatedTime=20210707
更新的时候,需要确保新数据的lastUpdatedTime更大时才写入

Cypher in Neo4j:
UNWIND $data as row
Match(n:Tag{id: row.id})
ON CREATE SET n.lastUpdatedTime = row.lastUpdatedTime
ON MATCH SET n.lastUpdatedTime = CASE WHEN row.lastUpdatedTime >= n.lastUpdatedTime THEN row.lastUpdatedTime ELSE n.lastUpdatedTime

Q2:如何全量的更新数据的某一字段呢
eg. Tag有一个状态的字段需要更新,我们采用标记删除的形式,把数据先标记为UPDATING状态,然后写入最新数据后,把状态UPDATING的数据标记为DELETED,此时需要全量的更新数据STATUS
Cypher in Neo4j:
MATCH(n:Tag) WHERE n.STATUS=‘ACTIVE’ SET n.STATUS=‘UPDATING’

有人能指导一下吗?

nebula-graph现在不支持一条query对多个点或者边进行upsert,所以你需要通过程序实现,比如你可以通过match或者lookup获取你要的修改的点,然后通过程序组装多条update语句进行多个点的修改;
例如
`
UPDATE VERTEX ON tag_name “AA” SET lastUpdatedTime = 20210708 WHEN lastUpdatedTime < 20210708

1 个赞

该话题在最后一个回复创建后30天后自动关闭。不再允许新的回复。

浙ICP备20010487号