Я работаю над запросом гремлина, который перемещается по нескольким краям и в итоге выдает String
.В зависимости от содержимого графика этот обход может быть пустым.В случае, если обход заканчивается пустым, я хочу вместо этого вернуть значение по умолчанию.
Вот что я сейчас делаю:
GraphTraversal<?, ?> traversal = g.traversal().V().
// ... fairly complex navigation here...
// eventually, we arrive at the target vertex and use its name
.values("name")
// as we don't know if the target vertex is present, lets add a default
.union(
identity(), // if we found something we want to keep it
constant("") // empty string is our default
)
// to make sure that we do not use the default if we have a value...
.order().by(s -> ((String)s).length(), Order.decr)
.limit(1)
Этот запрос работает , но это довольно запутанно - все, что я хочу, это по умолчанию, если обход заканчивается тем, что ничего не находит.
У кого-нибудь есть лучшее предложение?Мое единственное ограничение заключается в том, что это должно быть сделано внутри самого gremlin, то есть результат должен иметь тип GraphTraversal
.