Я хотел минимальную и максимальную длину двух разных узлов типа узлов.Я получил два разных запроса, но оба они медленные, я хочу, чтобы они были быстрыми.
1-й:> Это дает мне правильный ответ.
g.withSack(0).V().hasLabel("People").as("from","to").
repeat(both().as("to").dedup("from","to").
sack(sum).by(constant(1))).
emit(hasLabel("People")).
sack().dedup().fold().
project("min", "max").
by(choose(count(local).is(0), constant(0), min(local))).
by(choose(count(local).is(0), constant(0), max(local)))
и
2-й:> Это дает мне добавление от узлов к длине (означает min + 1 и max + 1)
g.V().hasLabel("People")
.as("from" ,"to" )
.repeat(both().as("to").dedup("from", "to")).emit(hasLabel("People")).hasLabel("People")
.select(all, "to").count(local).dedup().as("len").fold()
.project("min", "max")
.by(choose(count(local).is(0), constant(0), min(local)))
.by(choose(count(local).is(0), constant(0), max(local)))
Оба запроса занимают одно и то же время для выполнения, но медленнее, как это делает запрос neo4j cypher.Время выполнения Gremlin в 50 раз больше, чем запрос на шифрование.Вот шифр запрос