Gremlin - 运行 在同一查询中进行额外的遍历以防找不到足够的值
Gremlin - run additional traversal in same query in case not enough values are found
有没有办法检查找到了多少条记录,如果返回的记录少于 X 条,请重新查询?
比如先运行这个查询->
g.V().
hasLabel('courseContent').
has('status', 'active').as('cc').
outE('ccBelongsToCourse').
has('status', 'active').
inV().
hasLabel('course').
has('externalId', ':courseId').
select('cc').by(valueMap('externalId')).
dedup().
range(:offSet, :limit);
如果找到的记录少于 10 条,运行 这个查询:
g.V().
hasLabel('educatorContent').
has('status', 'active').as('ec').
select('ec').by(valueMap('externalId')).
dedup().
range(:offSet, :limit);
但所有这些都在同一个 .gremlin
文件中完成?
(抱歉,如果问题太基础,对 Gremlin 来说超级新)
您可以使用 choose()
提供 if-then 语义:
range(:offSet, :limit).fold().
choose(count(local).is(gt(9)),
identity(),
V().has('educatorContent', 'status','active')....)
有没有办法检查找到了多少条记录,如果返回的记录少于 X 条,请重新查询?
比如先运行这个查询->
g.V().
hasLabel('courseContent').
has('status', 'active').as('cc').
outE('ccBelongsToCourse').
has('status', 'active').
inV().
hasLabel('course').
has('externalId', ':courseId').
select('cc').by(valueMap('externalId')).
dedup().
range(:offSet, :limit);
如果找到的记录少于 10 条,运行 这个查询:
g.V().
hasLabel('educatorContent').
has('status', 'active').as('ec').
select('ec').by(valueMap('externalId')).
dedup().
range(:offSet, :limit);
但所有这些都在同一个 .gremlin
文件中完成?
(抱歉,如果问题太基础,对 Gremlin 来说超级新)
您可以使用 choose()
提供 if-then 语义:
range(:offSet, :limit).fold().
choose(count(local).is(gt(9)),
identity(),
V().has('educatorContent', 'status','active')....)