如何防止 redisgraph 中的数据重复?
How to prevent data duplication in redisgraph?
我写了一段代码在 redisgraph 中存储图形。最初它存储单个图,但如果我第二次执行相同的代码,那么它会将相同的图存储在数据库中而不替换之前的 graph.So,现在我在 [=13] 中的一个键中得到两个相同的图=] 不想要任何重复的图形或任何重复的节点,这意味着如果我再次执行相同的代码,它应该替换以前的代码 graph.How 我会这样做吗?
如果您的代码包含一系列 CREATE 命令(无论是通过 Cypher 还是其中一个 RedisGraph 客户端),运行 它会复制您所有的数据两次。这并不是说密钥存储了两个图;相反,它是一个图表,每个实体都重复了。
如果您想替换现有图表,您应该先删除现有图表。您可以使用 Redis 命令删除图表:
DEL [graph key]
或者 RedisGraph 命令:
GRAPH.DELETE [graph key]
两者在功能上完全相同。
相反,如果您想在不引入重复项的情况下更新现有图形,则应使用 MERGE 子句,如 in the RedisGraph documentation 所述。
您可以使用 MERGE 子句来防止插入重复数据。
下面是从现有数据中删除重复记录的查询
MATCH (p:LabelName)
WITH p.id as id, collect(p) AS nodes
WHERE size(nodes) > 1
UNWIND nodes[1..] AS node
DELETE node
MERGE
将像 查找或创建 一样工作。
如果您的节点、边或路径不存在,它将创建它。
这是避免重复实体(如果不允许)的推荐方法。
我写了一段代码在 redisgraph 中存储图形。最初它存储单个图,但如果我第二次执行相同的代码,那么它会将相同的图存储在数据库中而不替换之前的 graph.So,现在我在 [=13] 中的一个键中得到两个相同的图=] 不想要任何重复的图形或任何重复的节点,这意味着如果我再次执行相同的代码,它应该替换以前的代码 graph.How 我会这样做吗?
如果您的代码包含一系列 CREATE 命令(无论是通过 Cypher 还是其中一个 RedisGraph 客户端),运行 它会复制您所有的数据两次。这并不是说密钥存储了两个图;相反,它是一个图表,每个实体都重复了。
如果您想替换现有图表,您应该先删除现有图表。您可以使用 Redis 命令删除图表:
DEL [graph key]
或者 RedisGraph 命令:
GRAPH.DELETE [graph key]
两者在功能上完全相同。
相反,如果您想在不引入重复项的情况下更新现有图形,则应使用 MERGE 子句,如 in the RedisGraph documentation 所述。
您可以使用 MERGE 子句来防止插入重复数据。
下面是从现有数据中删除重复记录的查询
MATCH (p:LabelName)
WITH p.id as id, collect(p) AS nodes
WHERE size(nodes) > 1
UNWIND nodes[1..] AS node
DELETE node
MERGE
将像 查找或创建 一样工作。
如果您的节点、边或路径不存在,它将创建它。
这是避免重复实体(如果不允许)的推荐方法。