Gremlin Query для возврата нескольких Result в ResultSet - PullRequest
0 голосов
/ 08 ноября 2018

Может быть, мое понимание запроса Гремлина неверно :). Я пытаюсь выполнить запрос от клиента Java, и запрос: g.V (). HasLabel ('MYLABEL'). Имейте несколько (скажем, 20) вершин, которые соответствуют метке, и ResultSet просто имеет один Результат с данными всех двадцати включенных вершин. Я хотел бы иметь ResultSet с 20 результатами. Каким образом мне нужно переставить запрос. пожалуйста, предложите.

  • немного больше деталей:

Из консоли.

[результат запроса при запуске из консоли gremlin] [1]

gremlin> client.submit ("g.V (). HasLabel ('PERSON')")

==> result {object = v [11] class = org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==> result {object = v [13] class = org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==> result {object = v [15] class = org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}

Из клиента Java Запрос -> г.V (). HasLabel ('PERSON')

Результат -> result {object = {@ type = g: List, @value = [{@ type = g: вершина, @ value = {id = {@ type = g: Int64 , @ value = 11}, label = PERSON, properties = {AGE = [{@ type = g: VertexProperty, @ value = {id = {@ type = g: Int64, @ value = 12}, value = {@ type = g: Int32, @ value = 11}, метка = AGE}}]}}}, {@ type = g: вершина, @ value = {id = {@ type = g: Int64, @ value = 13}, метка = ЧЕЛОВЕК, свойства = {AGE = [{@ type = g: VertexProperty, @ value = {id = {@ type = g: Int64, @ value = 14}, значение = {@ type = g: Int32, @ value = 12}, label = AGE}}]}}}, {@ type = g: вершина, @ value = {id = {@ type = g: Int64, @ value = 15}, label = PERSON, properties = {AGE = [{@ type = g: VertexProperty, @ value = {id = {@ type = g: Int64, @ value = 16}, значение = {@ type = g: Int32, @ value = 13}, метка = AGE}} ]}}}]} class = java.util.LinkedHashMap}

1 Ответ

0 голосов
/ 08 ноября 2018

Просто используйте fold() как в - мой пример вы можете увидеть здесь:

gremlin> cluster = Cluster.open()
==>localhost/127.0.0.1:8182
gremlin> client = cluster.connect()
==>org.apache.tinkerpop.gremlin.driver.Client$ClusteredClient@51efb731
gremlin> r = client.submit("g.V().hasLabel('person')").all().get()
==>result{object=v[1] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[2] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[4] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[6] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
gremlin> r = client.submit("g.V().hasLabel('person').fold()").all().get()
==>result{object=[v[1], v[2], v[4], v[6]] class=java.util.ArrayList}

Обратите внимание, что недостатком fold() в этом примере является то, что результат не будет передан обратно клиенту. Вы создадите весь список в памяти на сервере, а затем он сериализует этот список как одну полезную нагрузку. Если этот список достаточно велик и вы генерируете достаточно таких списков, вы можете столкнуться с проблемами памяти / GC.

...