Я столкнулся с этой проблемой во время миграции запросов gremlin с v2 на v3.
V2-way : inE().has(some condition).outV().map().toList()[0]
вернет объект.Это обернуто в transform{label: it./etc/}
шаг.
V3-way , все еще WIP: inE().has(some condition).outV().fold()
вернет массив.Это обернуто в project(...).by(...)
шаг.
V3 работает нормально, мне просто нужно развернуть элемент из массива вручную.Интересно, есть ли более вменяемый подход (во всяком случае, это похоже на шаг без графов).
Среда: JanusGraph, TinkerPop3 +.Для v2: дБ Titan graph и TinkerPop2 +.
Обновление: Пример запроса V3
inE('edge1').
has('cond1').outV(). // one vertex left
project('items', 'count'). // pagination
by(
order().
by('field1', decr).
project('vertex_itself', 'vertex2', 'vertices3').
by(identity()).
by(outE('edge2').has('type', 'type1').limit(1).inV().fold()). // now this is empty array or single-element array, can we return element itself?
by(inE('edge2').has('type', 'type2').outV().fold()).
fold()).
by(count())
Желаемая форма результата:
[{
items: [
{vertex_itself: Object, vertex2: Object/null/empty, veroces3: Array},
{}...
],
cont: Number,
}]
Проблема: vertex2
свойство всегда является массивом, пустым или одноэлементным.
Ожидается: vertex2
будет объектом или нулем / пустым.
Обновление 2: оказывается, что мой запрос еще не завершен, он возвращает много объектов, если в шаге has('cond1').outV()
нет ни одного элемента, например, [{items, count}, {items, count}...]