怎么实现or查询

match (n:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n;
问下nebula怎么实现这种语句查询,nebula版本是3.0.1

match (n:42db90fb47e843978a66f7e3ea723b0f)-[r]-(m:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n,r,m;
还有这种语句,nebula怎么支持查询?

42db90fb47e843978a66f7e3ea723b0f这个是点vid吗?
人物名称黑名单和部门是tag?

这是neo4j的语法,人物名称黑名单 和部门相等于是nebula的tag

按照我的理解,是不是可以这么写
match (n:人物名称黑名单)-[r]->(m)
return n,r,m
union
match (n:部门-[r]->(m)
return n,r,m


语法有问题啊

match (n:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n;
match (n:42db90fb47e843978a66f7e3ea723b0f)-[r]-(m:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n,r,m;
目的就是想用nebula实现这两个语句的语法


可以的啊,如果没有where,要加limit,另外需要创建索引

不能limit,能查询出来全部的么

可以全部,但是需要在tag上创建索引

那这个语法呢,match (n:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n;
也是match (n:nebula_4EBA_7269) return n
union
match (n:nebula_4EBA_7269_540D_79F0_9ED1_540D_5355) return n这样查询么

nebula_4EBA_7269_540D_79F0_9ED1_540D_5355这个是vid还是tag?

:nebula_4EBA_7269_540D_79F0_9ED1_540D_5355 是tag,要是数据量稍微大点这种语句会查询很慢么

是的,如果数据量大会很慢的,因为这个语句是把这两个tag中的数据都输出出来了

好的,有其他的语法么来解决这个问题么

match (n:42db90fb47e843978a66f7e3ea723b0f) where n:人物名称黑名单 or n:部门 return n;
这个语句,我觉得是要输出两个tag的所有数据,那么用lookup也可以实现

lookup返回的和match返回的不一样好像

lookup可以定义想要输出的属性的,如果要match这样的格式,那就只能使用match语句,应该也没有其他的语法去实现这个需求了

好的, 我就用match先实现把,多谢了

可以把nebula代码拉下来
tests/tck/features目录搜索 OR (设置大小写敏感,两边带空格) ,会找到一些例子

浙ICP备20010487号