【发布时间】:2019-01-06 06:02:59
【问题描述】:
我的应用程序有英文过滤器,我需要将这些过滤器翻译成 Gremlin 查询。每个过滤器由三部分组成:
- 顶点类型
- #1 中顶点的出边标签
- #2 中边缘的传入顶点名称
任何部分都可以采用字符串“any”,这表示结果中可以包含任何类型、标签或名称。 以现代玩具图为例,我有以下两个过滤器:
- 人 -> 已创建 -> 任何
- 人 -> 知道 -> vadas
以上两个过滤器的评估结果应该是:
- marko -> 创建 -> lop
- marko -> 知道 -> vadas
而以下两个过滤器:
- 人 -> 任何 -> 乔希
- 人 -> 创建 -> lop
应该评估到以下边缘:
- marko -> 知道 -> josh
- marko -> 创建 -> lop
我提出的最接近上述预期结果的查询是:
g.E().and(outV().outE().has(label, "created"), outV().outE().has(label, "knows").inV().has("name", "vadas"), outV().has(label, "person"))
上述查询的问题在于它返回了从 marko 出来的所有三个边,而不仅仅是两个所需的边。如上所述,如何改进我的查询以仅返回两条边?
【问题讨论】: