자습서: Gremlin을 사용하여 Azure Cosmos DB Gremlin API 쿼리Tutorial: Query Azure Cosmos DB Gremlin API by using Gremlin

적용 대상: Gremlin API

Azure Cosmos DB Gremlin APIGremlin 쿼리를 지원합니다.The Azure Cosmos DB Gremlin API supports Gremlin queries. 이 문서에서는 샘플 문서와 쿼리를 제공하여 시작합니다.This article provides sample documents and queries to get you started. Gremlin에 대해서는 Gremlin 지원 문서에서 자세히 참조할 수 있습니다.A detailed Gremlin reference is provided in the Gremlin support article.

이 문서에서 다루는 작업은 다음과 같습니다.This article covers the following tasks:

  • Gremlin을 사용한 데이터 쿼리Querying data with Gremlin

사전 요구 사항Prerequisites

이러한 쿼리가 작동하려면 Azure Cosmos DB 계정이 있어야 하며 컨테이너에 그래프 데이터가 있어야 합니다.For these queries to work, you must have an Azure Cosmos DB account and have graph data in the container. 이들 중 하나라도 없는가요?Don't have any of those? 그러면 5분 퀵 스타트 또는 개발자 자습서를 수행하여 계정을 만들고 데이터베이스를 채워 놓으세요.Complete the 5-minute quickstart or the developer tutorial to create an account and populate your database. Gremlin 콘솔 또는 즐겨찾는 Gremlin 드라이버를 사용하여 다음 쿼리를 실행할 수 있습니다.You can run the following queries using the Gremlin console, or your favorite Gremlin driver.

그래프의 꼭짓점 계산Count vertices in the graph

다음 코드 조각에서는 그래프의 꼭짓점 수를 계산하는 방법을 보여 줍니다.The following snippet shows how to count the number of vertices in the graph:

g.V().count()

필터Filters

Gremlin의 hashasLabel 단계를 사용하여 필터링을 수행하고, and, ornot으로 필터를 결합하여 더 복잡한 필터를 만들 수 있습니다.You can perform filters using Gremlin's has and hasLabel steps, and combine them using and, or, and not to build more complex filters. Azure Cosmos DB는 빠른 쿼리를 위해 꼭짓점과 각도 내의 모든 속성에 대해 스키마 독립적 인덱싱을 제공합니다.Azure Cosmos DB provides schema-agnostic indexing of all properties within your vertices and degrees for fast queries:

g.V().hasLabel('person').has('age', gt(40))

도법Projection

values 단계를 사용하여 쿼리 결과에 특정 속성을 프로젝션할 수 있습니다.You can project certain properties in the query results using the values step:

g.V().hasLabel('person').values('firstName')

지금까지 모든 데이터베이스에서 작동하는 쿼리 연산자만 보았습니다.So far, we've only seen query operators that work in any database. 관련 가장자리와 꼭짓점으로 이동해야 할 때 그래프는 이 순회 작업에 빠르고 효율적입니다.Graphs are fast and efficient for traversal operations when you need to navigate to related edges and vertices. Thomas의 친구들을 모두 찾아 보겠습니다.Let's find all friends of Thomas. 이렇게 하려면 Gremlin의 outE 단계를 사용하여 Thomas의 모든 가장자리를 찾은(out-edge) 다음, Gremlin의 inV 단계를 사용하여 이러한 가장자리에서 꼭짓점으로 이동합니다(in-vertex).We do this by using Gremlin's outE step to find all the out-edges from Thomas, then traversing to the in-vertices from those edges using Gremlin's inV step:

g.V('thomas').outE('knows').inV().hasLabel('person')

다음 쿼리에서는 outEinV를 두 번 호출함으로써 홉을 두 번 수행하여 Thomas의 "친구의 친구"를 모두 찾습니다.The next query performs two hops to find all of Thomas' "friends of friends", by calling outE and inV two times.

g.V('thomas').outE('knows').inV().hasLabel('person').outE('knows').inV().hasLabel('person')

Gremlin을 사용하여 필터 식을 혼합하고, loop 단계를 사용하여 루핑을 수행하고, choose 단계를 사용하여 조건부 탐색을 구현하는 등 더욱 복잡한 쿼리를 작성하고 강력한 그래프 순회 논리를 구현할 수 있습니다.You can build more complex queries and implement powerful graph traversal logic using Gremlin, including mixing filter expressions, performing looping using the loop step, and implementing conditional navigation using the choose step. Gremlin 지원에서 수행할 수 있는 작업에 대해 자세히 알아보세요!Learn more about what you can do with Gremlin support!

다음 단계Next steps

이 자습서에서는 다음을 수행했습니다.In this tutorial, you've done the following:

  • 그래프를 사용하여 쿼리하는 방법Learned how to query using Graph

이제 개념 섹션으로 진행하여 Cosmos DB에 대한 자세한 정보를 확인할 수 있습니다.You can now proceed to the Concepts section for more information about Cosmos DB.