1、nebula能否通过一个sql完成批量删除点并返回受影响的记录数,目前翻阅文档没有找到如何去写这样的sql
2、如何通过ngql来支持带条件批量更新点属性的场景
可以先把点查询出来,得到 vid,再去删除,参考文档中的示例:DELETE VERTEX - NebulaGraph Database 手册
delete 语句目前不返回被删除的点的数量。
update vertex 语句可以更新点属性,可以带条件。
update vertex语句目前是要带vid,只能单条更新,我们目前的需求是通关条件查询出匹配的点,然后批量更新这些点。通过管道符方式报了语法不支持的问题。有没有办法通过ngql语句解决这个问题吗?
批量删除的问题已经解决了,ngql语句如下:
目前需要一个一个点的更新。还是建议考虑先把 vid 查询出来,再一个个处理。
目前版本没有办法用一条语句搞定。一方面是语法要求 vid。另一方面我们的事务功能还没有发布,在没有原子性保证的情况下,多条 update 拼在一起后,不能保证其全部成功或全部失败的原子性。还是一条一条处理,逐条检查执行是否成功,比较好。
有计划那个版本支持这个批量更新的功能吗
目前没有可公开的版本计划。
支持的。可能是你的 pro 参数没有正确定义。
执行下这个 :RETURN $pro3
出现问题是通过java客户端调用executeWithParameter方法出现的。
ngql如下:
参数map组装如下:
Map<String,Object> params=new HashMap<>();
params.put(“pro3”,Arrays.asList(true,false));
应该是in条件方式不支持命名参数方式。pro3底层类型是boolean,通过命名参数传入的对象是list类型,在执行的时候就报pro3类型不正确的异常
在nebula3.通过java客户端执行语句
hold_pro1、hold_pro4是通过命名参数方式传入。底层报E_RPC_FAILURE错误
发现后台storaged进程被关闭
grapherror的日志如下:
但是奇怪的是同样的语句通过console控制台是可以执行的。
这个客户端跟console平台调用的还不一样吗?
console 是调用 nebula-go client 的
那java客户端调用同样的语句为啥会导致storaged进程挂了?
上面不是报错吗?storage 挂是执行这条语句吗,发一下 core 栈吧。
断点到 Session.java:108 看下 map 的值,怀疑有可能是转换错了。
这个core栈在哪里获取?