提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Janusgraph学习记录(2)
前言
学习Janusgraph的相关记录,全部都是实操,概念不赘述。
一、gremlin进阶语法
1.递归查询的几种写法
基本写法:
便捷写法:
repeat(traversal):重复循环遍历操作,知道接收到停止为止。traversal表示循环中重复的一组gremlin操作。
times(integer):repeat()循环的修饰符。integer表示循环次数。
until(traversal):repeat()循环的修饰符。traversal表示循环计算一遍的一组gremlin操作。,当计算结果为true时,退出repeat()循环。简单来说就是循环停止条件。
所以上述查询可修改为以下两种写法:
不清楚重点属性、但知道跳数的查询方法:
或者是知道重点属性的查询方法:
相对来说还是很灵活的。但需要注意的是,使用until查询时,会产生性能问题,条件不满足时有可能遍历全图路径,建议加上times指定最大迭代次数或者使用timeLimit()指定查询时间。
要说明一点until操作在repeat之前,相当于while-do操作,反之是do-while操作,差别就是后者在检查之前已经执行过一次操作。
另外,我们在查询时有可能不知道循环次数,需要起始、中间路径、结尾的信息,这时可以通过添加emit()来实现查询结果。
同样的查询语句在python里面执行只能查出起始点,暂时还没试出来怎么在pycharm里面打印出全路径。。。用emit不能完全展示,尝试了如下方法,还是不尽如人意,有懂的欢迎留言指导,谢谢
另外,emit在repeat之前和之后的结果不一样,在linux环境emit在repeat之前可以显示全路径,在repeat之后显示的路径不包含起点且终点重复。
递归遍历基本就这些,下一节是图变异。
总结
欢迎评论区交流一起进步。。