除了查出来管道删,就是 drop edge,前者应该会加载所有边量大了不太适合一下子删,后者会同时删掉边的定义哈
如何能不删除边的定义呢
需求就是千万数据,批量删除数据,保留tag和edge的定义
MATCH (n:8fc266ca2be74073abea99e87a5fa54e:人物) with n.名称 as 名称, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1
CALL apoc.refactor.mergeNodes(nodelist,{properties:‘discard’}) YIELD node RETURN node
问下apoc,归一消歧的语法,nebula这边有支持么,如果没有大数据量的情况下需要怎么处理呢
目前只能多语句,先查再增删
怎么查询,在插入?
多语句的话,是否是查询match一次,在删除一次
先查询满足条件的实体 id,再通过实体 id 删除或插入数据
有语法可以在大数据量的情况下,一次查询出来多个name相同的数据么,也就是nebula的语法支持查询那么相同或者其他条件相同的数据,一次查询出来,再根据相同的数据程序判断保留那些,删除那些,如果他们有关联边,是否也要删除重新关联??
例如一个tag,查询出来name相同的数据,一条语句查询出来,假如说有上万条,查询的效率能保证么?
nebula 未提供相关的内置算法或 udf 机制,所以目前不支持实体消歧。一种可能的实现方式是在 SDK 层实现消歧算法,对数据基于消歧的规则进行判断再向服务端发 delete/insert 请求,这样做效率肯定是比较低的。
如果仅仅是单语句查询,性能是可以在实际场景中测出来的。
有语句支持么,我现在是这样查询,"MATCH (v:tag) where v.tag.name == ‘search’ and 。。这样查询的,有没有类似sql那种查询语法, select * from name where name.mingcheng = name.mingcheng。这种语法
就是我不知道查询属性值的条件,nebula怎么查询,就知道name属性值相同,怎么用nebula的语法查询?
select * from user where name in (select name from user group by name having count(name) > 1)
用sql应该是这样查询的
查询所有 tag 为 person 且 name 属性相同的点:
MATCH (v:person)
WITH v.person.name AS name, collect(id(v)) AS ids, count(v) AS count
WHERE count>1
RETURN name, ids
collect(id(v)) 有先后顺序么,就是最新入的数据在前面?
无序。
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。