请教如何在不确定属性类型的情况下,对关系属性进行模糊查询?
发布于 6 年前 作者 AIwem 2959 次浏览 来自 问答

如题, 对节点属性的模糊查询比较简单,但对关系则不太一样了,特别是在不确定属性类型的情况下 比如,想查出任何属性内包含“_2”字符的关系,如下语句是不行的,

MATCH p=()-[r]->() WHERE ANY(k IN keys ® WHERE r[k] =~’._2’) RETURN p,*

但MATCH p=()-[r]->() WHERE ANY(k IN keys® WHERE r[k] =[‘53_8_2’]) RETURN p,可以

也就是查询关系属性必须要中括号[]吗?但模糊查询情况下,怎么跟~写一起? =[~’._2’],=~[’._2’],这两种都不对。还是有其他方法?

7 回复

keys® 是key(r),不知道为什么提交后就变了,忽略就好

r[k] =~’.2.’ 这样试试

@pangguoming 不行哦,我第一次尝试就是这个写法,但没效果,而且这写法是将“2”放中间了,我的需求是以“_2”结尾

r[k] =~’.* 2.* ’ 是这样, .* 代表任意字符串

@pangguoming 是的,我输入的就是点星.*,提交到这就变点了。不过还是不行。

问题一定程度上解决了,其实是我用java api创建的关系查不出来,直接用cyther语句在浏览器上创建的关系则可以。问题换为:为啥api创建的就不行?我对比了两种方法创建的关系,貌似没有什么区别。。。大神能解决下吗

问题最终解决了,原因是api创建的关系属性值有数组,以上的语句不能查这种数组,需要再加一层any函数,如下: MATCH p=()-[r:sem_event]->() WHERE Any(k IN keys® where any(nn in r[k] where nn =~'s53_.’)) RETURN p* 希望给后来者一些启示吧

回到顶部