Я новичок в Cosmos DB, и у меня есть вопрос, что я создал коллекцию под названием student в Cosmos DB и подключил базу данных в своем .net sdk, тогда как мне написать запрос для выбора всех данных из коллекции student? ?
См. Пример кода:
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();
}
Все сводится к личным предпочтениям, поэтому я предлагаю несколько вариантов на выбор.
Если мой ответ вам поможет, отметьте его как ответ.