1

我的图表有以下边:

e[1][0--classes->1]
e[2][0--classes->2]
e[3][0--classes->3]

节点 1,2,3classId分别具有属性 1,2 和 3。

我想编写一个查询来返回所有对 (m,n) 使得 m.classId < n.classId。以下是我迄今为止最接近的尝试:

g.V(0).out("classes")
.as_('n').classId.as_('nid')
.select('n').in_("classes").out("classes")
.as_('m').classId.where(lte(select('nid')))
.select('m', 'n')

不幸的是,lte期望一个数字 whileselect('nid') 是一个遍历。我已经尝试了 .where 和 is_ 遍历的各种输入变体,但没有任何乐趣。

4

1 回答 1

1

您不需要使用select内部lte步骤。您可以在没有它的情况下使用命名的“nid”。

您还缺少by调制器:

g.V().hasLabel('0').out('classes').as('n').
    as('nid').select('n').
  in('classes').out('classes').as('m').
  where(lte('nid')).
    by('classId').
    select('m', 'n')

示例:https ://gremlify.com/bu789rfvme89q

于 2020-06-05T09:30:11.347 回答