Гремлин соединяет компоненты печатает по одному

Я новичок в gremlin QL, мое требование генерировать связанные компоненты на огромном графике. Я пробовал приведенный ниже запрос, но он печатает как группу значений, но мне нужно печатать одно за другим.

Связанные компоненты Запрос:

g.V().emit(cyclicPath().or().not(both())).repeat(both()).until(cyclicPath()).path().aggregate("p").unfold().dedup().map(__.as("v").select("p").unfold().filter(unfold().where(eq("v"))).unfold().dedup().order().by(id).fold()).dedup()
[v[89826185]]
[v[89826188], v[89826189], v[89826190], v[89826191], v[89826192], v[89826193], v[89826194]]
[v[89826195], v[89826196], v[89826198]]

Мне нужно напечатать значения, как показано ниже. min-id группы (списка) для каждого элемента группы (списка).

Пример:

89826188 89826189
89826188 89826190
89826188 89826191
89826188 89826192
89826188 89826193
89826188 89826194
89826188 89826188 (self)

Любая помощь будет оценена.

Спасибо

1 ответ

Решение

Вы можете сделать это в коде вашего приложения. Выполнение этого на уровне запроса только увеличит размер результата, но здесь вы идете:

g.V().
  emit(cyclicPath().or().not(both())).
    repeat(both()).
    until(cyclicPath()).
  path().aggregate("p").
  unfold().dedup().
  map(__.as("v").select("p").unfold().
      filter(unfold().where(eq("v"))).
      unfold().dedup().
      order().
        by(id).
      fold()).
  dedup().as("list").
  unfold().
  map(union(select("list").
              by(limit(local, 1)),
            identity()).
      id().fold())

Это в основном тот же запрос, я только добавил окончательный map() шаг, чтобы переформатировать результат.

Другие вопросы по тегам