Как написать sql-запрос для cosmos db?

Я новичок в Cosmos DB, и у меня есть вопрос, что я создал коллекцию под названием student в Cosmos DB и подключил базу данных в своем .net sdk, тогда как мне написать запрос для выбора всех данных из коллекции student? ?

Если мой ответ вам поможет, отметьте его как ответ.

Jay Gong 01.11.2018 02:17
0
1
383
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

См. Пример кода:

class QuerySample
    {
        private static readonly string endpointUrl = "https://***.documents.azure.com:443/";
        private static readonly string authorizationKey = "***";
        private static readonly string databaseId = "db";
        private static readonly string collectionId = "coll";

        private static DocumentClient client;

        public static async void QueryTest()

        {
            client = new DocumentClient(new Uri(endpointUrl), authorizationKey);
            var uri = UriFactory.CreateDocumentCollectionUri(databaseId, collectionId);

            var query = client.CreateDocumentQuery( uri, "select * from c",
            new FeedOptions
            {
                MaxItemCount = -1,                    
                //EnableCrossPartitionQuery = true
            });
            var queryAll = query.AsDocumentQuery();

            var results = new List<Student>();

        }
    }
Ответ принят как подходящий

Есть несколько способов выполнить SQL-запросы с помощью кода C#.

Используя .NET SDK:

private async Task<List<Student>> GetStudentsAsync()
{
    var serviceEndpoint = new Uri("https://localhost:8081");
    var masterKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
    var collectionUri = UriFactory.CreateDocumentCollectionUri("databaseId", "collectionId");
    var documentClient = new DocumentClient(serviceEndpoint, masterKey);

    var query = documentClient.CreateDocumentQuery(collectionUri, "select * from c").AsDocumentQuery();
    var results = new List<Student>();

    while (query.HasMoreResults)
    {
        results.AddRange(await query.ExecuteNextAsync<Student>());
    }

    return results;
}

Также есть библиотека (которую я сделал), которая упрощает доступ к данным и запросы CosmosDB, под названием Космонавт.

Используя это, то же самое становится таким:

private async Task<List<Student>> GetStudentsCosmonautAsync()
{
    var serviceEndpoint = new Uri("https://localhost:8081");
    var masterKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
    var databaseId = "databaseId";
    var studentStore = new CosmosStore<Student>(new CosmosStoreSettings(databaseId, serviceEndpoint, masterKey));

    return await studentStore.Query("select * from c").ToListAsync();
}

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

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