Руководство по запросу Azure Cosmos DB для Gremlin с помощью Gremlin
Область применения: Гремлин
API Azure Cosmos DB для Gremlin поддерживает запросы Gremlin. В этой статье приведены примеры документов и запросов, которые помогут вам начать работу. Подробная справка по Gremlin содержится в этой статье.
В этой статье рассматриваются следующие задачи:
- Выполнение запросов к данным с помощью Gremlin.
Необходимые компоненты
Чтобы такие запросы работали, у вас должна быть учетная запись базы данных Azure Cosmos DB и данные графа в контейнере. У вас их нет? Выполните инструкции из 5-минутного краткого руководства, чтобы создать учетную запись и заполнить базу данных. Вы можете выполнять следующие запросы с помощью консоли Gremlin или предпочитаемого драйвера Gremlin.
Подсчет вершин в графе
В следующем фрагменте показано, как подсчитать количество вершин в графе:
g.V().count()
Фильтры
Вы можете выполнять фильтрацию с помощью шагов Gremlin has
и hasLabel
, а также объединять их с помощью операторов and
, or
и not
для создания более сложных фильтров. База данных Azure Cosmos DB предоставляет схемонезависимое индексирование всех свойств в ваших вершинах и степенях для быстрого выполнения запросов:
g.V().hasLabel('person').has('age', gt(40))
Проекция
Вы можете проецировать некоторые свойства в результатах запроса с помощью шага values
:
g.V().hasLabel('person').values('name')
Поиск связанных ребер и вершин
Пока мы видели только операторы запросов, которые работают в любой базе данных. Графы способны быстро и эффективно выполнять операции обхода, когда вам необходимо перейти к связанным ребрам и вершинам. Давайте найдем всех друзей Томаса. Мы сделаем это с помощью шага Gremlin outE
, чтобы найти все исходящие от Томаса ребра, а затем переместимся к вершинам исходящих ребер с помощью шага Gremlin inV
:
g.V('thomas').outE('knows').inV().hasLabel('person')
Следующий запрос выполняет два прыжка, чтобы найти всех друзей друзей Томаса, вызвав outE
и inV
два раза.
g.V('thomas').outE('knows').inV().hasLabel('person').outE('knows').inV().hasLabel('person')
Вы можете создавать более сложные запросы и внедрять эффективную логику обхода графа с помощью Gremlin, включая сочетание выражений фильтров, выполнение цикла с помощью шага loop
и реализацию условной навигации с помощью шага choose
. Дополнительные сведения о возможностях, допустимых благодаря поддержке Gremlin, см. в этой статье.
Следующие шаги
В этом руководстве вы выполнили следующее:
- Вы научились выполнять запросы с помощью Graph.
Теперь можно перейти к разделу основных понятий, чтобы получить дополнительные сведения о службе Azure Cosmos DB.