Gremlin запрос, который возвращает только вершины, имеющие ребра - PullRequest
0 голосов
/ 18 сентября 2018

Есть ли более эффективный способ вернуть id первых 100 вершин, которые имеют ребра и не имеют определенного свойства?

g.V()
 .filter(hasNot("SOME_PROPERTY").bothE())
 .limit(100)
 .id()

1 Ответ

0 голосов
/ 18 сентября 2018

Я не думаю, что вы можете написать это гораздо более оптимальным способом.Этот обход будет происходить так же быстро, как и способность лежащих в основе графиков оптимизировать отсутствие свойства, которое обычно не так быстро.Обычно он рассматривается как глобальная операция, которая должна повторять каждую вершину в графе (или до тех пор, пока не найдет 100 совпадений), и я не думаю, что какой-либо граф допускает индексы, которые могут помочь в подобном случае.

Если этот обход предназначен для обхода в реальном времени (OLTP), то вам, вероятно, следует рассмотреть возможность использования по умолчанию этого значения "SOME_PROPERTY", чтобы его можно было каким-то образом проиндексировать для обнаружения отрицательных значений или если оно большеадминистративный обход (например, обнаружение неверных данных для очистки) (OLAP), тогда вам, вероятно, следует выполнить этот обход с Gremlin Spark.

...