我编写了一个代码来在redisgraph中存储图形。最初它是存储单个图形,但如果我第二次执行相同的代码,那么它将在数据库中存储相同的图形,而不替换以前的图形。所以,现在我在数据库中的一个键中得到了两个相同的图,我不想要任何重复的图或任何重复的节点,这意味着如果我再次执行相同的代码,它应该替换以前的图。我将如何做到这一点?
332nm8kg1#
可以使用merge子句来防止插入重复数据。下面是从现有数据中删除重复记录的查询
MATCH (p:LabelName) WITH p.id as id, collect(p) AS nodes WHERE size(nodes) > 1 UNWIND nodes[1..] AS node DELETE node
q35jwt9p2#
如果您的代码由一系列create命令组成(无论是通过cypher还是redisgraph客户机),那么运行两次将复制所有数据。这并不是说键存储两个图;相反,它是一个图,每个实体都是重复的。如果要替换现有图形,应首先删除现有图形。可以使用redis命令删除图形: DEL [graph key] 或redisgraph命令: GRAPH.DELETE [graph key] 两者在功能上完全相同。相反,如果您想更新现有的图形而不引入重复的图形,则应该使用redisgraph文档中描述的merge子句。
DEL [graph key]
GRAPH.DELETE [graph key]
2条答案
按热度按时间332nm8kg1#
可以使用merge子句来防止插入重复数据。
下面是从现有数据中删除重复记录的查询
q35jwt9p2#
如果您的代码由一系列create命令组成(无论是通过cypher还是redisgraph客户机),那么运行两次将复制所有数据。这并不是说键存储两个图;相反,它是一个图,每个实体都是重复的。
如果要替换现有图形,应首先删除现有图形。可以使用redis命令删除图形:
DEL [graph key]
或redisgraph命令:GRAPH.DELETE [graph key]
两者在功能上完全相同。相反,如果您想更新现有的图形而不引入重复的图形,则应该使用redisgraph文档中描述的merge子句。