match/go 多Tag属性过滤

我先自己研究一下,谢谢!

大佬,早上好!谢谢你们陪伴我一周多的调研,我总结了一下,还有3,4目标有些问题,能否帮忙解决掉,完成这次的调研工作。
我这次调研的目标,基于 match p=(v)-[e*0..3]-[v2] return p;
1,多tag的属性过滤—已ok
2,多edgeType的属性过滤—已ok
3,指定第几跳的点属性过滤—调研中
如果是某一跳中间点可能会比较复杂 能不能帮忙提供一个例子
4,指定第几跳的边属性过滤—有问题
比如:p1=v1-e1-v2-e2-v3,我通过e[1]排除掉了e2之后,p1路径就没有了,预期是
返回 p1=v1-e1-v2

如果你希望比较第几跳的边和点,可以不用变长 pattern。

MATCH p=(v)-[e1]-(v1)-[e2]-(v2)-[e3]-(v3)
RETURN p

可以直接引用 pattern 中定义的变量做属性过滤,变长 pattern 没有显式定义中间点的变量所以会比较复杂。
边过滤结果有问题,可以去主仓提个 issue,详细描述一下复现过程 https://github.com/vesoft-inc/nebula/issues

好的,谢谢!

  • 快收尾了,下面这个查询能对节点进行去重,如何在一个查询中能同时对路径p的节点和边都去重呢?
MATCH p=(v:player{name:"Tim Duncan"})-[e*0..1]-(v2)
WITH nodes(p) AS n 
# 提示报错,-1009:SemanticError: Alias `p` not defined
# WITH relationships(p) AS a
UNWIND n AS r 
WITH DISTINCT r AS r 
RETURN collect(r);

cypher 语法默认的路径模式是 点可以重复边不能重复,你通过变量 e 拿到的边不会有重复。

  • 下面的语句报错的:-1009:SemanticError: Alias used but not defined: `e’
  • RETURN collect(r),e; 不能同时返回,如何能同时返回呢?
MATCH p=(v:player{name:"Tim Duncan"})-[e*0..1]-(v2)
WITH nodes(p) AS n 
UNWIND n AS r 
WITH DISTINCT r AS r 
RETURN collect(r),e;
MATCH p=(v:player{name:"Tim Duncan"})-[e*0..1]-(v2)
RETURN toSet(nodes(p)), e

好的,非常感谢!

嗨,有没有好的办法判断space、tag、以及tag属性创建成功,除了轮询 desc space 之外有没有其他办法?其实我就是想实现同步的创建space、tag等(因为你们的底层是异步处理的),谢谢!

我没想到其他方法

future.get()

没看明白,能写一下示例代码吗?

session = pool.getSession("root", "nebula", false);
ResultSet resp = session.execute("...");

查询中graphd宕机了,帮忙看看,这下麻烦大了 :sob:,另外这个dmp文件怎么打开啊
5f4de1f3-63ed-4749-7b091091-ae60f949.dmp (1.4 MB)

1 个赞

定位到原因了,如果有一条边数据,指向的实体tag不存在时,通过match查询时候graphd就会crash

1 个赞

Bug已提交,Grahd crash when the tag pointed to by the edge data does not exist · Issue #4697 · vesoft-inc/nebula · GitHub

2 个赞

嗯,会尽快修的

1 个赞

大佬,schema同步刷新的问题,3.2.0的版本如何解决,心跳时间可以设置为1s吗?
我们也遇到了同样的问题,创建schema后,需要立马插入数据,用户不能等太久

可以调小。

1 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。