Azure Cosmos DB — это глобально распределенная многомодельная служба баз данных, предоставляемая Microsoft. Он предлагает ряд функций для эффективного управления и запроса данных. Одной из распространенных задач является получение количества элементов в контейнере Cosmos DB. В этой статье мы рассмотрим несколько методов выполнения этой задачи на примерах кода на различных языках программирования.
Метод 1: использование SQL-запроса
Язык: SQL
SELECT VALUE COUNT(1) FROM c
Объяснение:
Этот метод использует простой запрос SQL для получения количества элементов в контейнере. Функция COUNT(1)
возвращает количество документов в контейнере.
Метод 2. Использование.NET SDK
Язык: C#
using Microsoft.Azure.Cosmos;
string endpointUri = "your-cosmosdb-endpoint-uri";
string primaryKey = "your-cosmosdb-primary-key";
string databaseId = "your-database-id";
string containerId = "your-container-id";
CosmosClient cosmosClient = new CosmosClient(endpointUri, primaryKey);
Container container = cosmosClient.GetContainer(databaseId, containerId);
QueryDefinition queryDefinition = new QueryDefinition("SELECT VALUE COUNT(1) FROM c");
FeedIterator<int> queryResultSetIterator = container.GetItemQueryIterator<int>(
queryDefinition,
requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey("your-partition-key") }
);
int count = 0;
while (queryResultSetIterator.HasMoreResults)
{
FeedResponse<int> currentResultSet = await queryResultSetIterator.ReadNextAsync();
count += currentResultSet.Count;
}
Console.WriteLine($"Number of items in the container: {count}");
Объяснение.
Этот метод использует пакет SDK Azure Cosmos DB.NET для выполнения SQL-запроса и получения количества элементов в контейнере. FeedIterator
используется для перебора результатов запроса, а счетчик накапливается путем суммирования счетчиков из каждого набора результатов.
Метод 3. Использование JavaScript SDK
Язык: JavaScript
const CosmosClient = require("@azure/cosmos").CosmosClient;
const endpointUri = "your-cosmosdb-endpoint-uri";
const primaryKey = "your-cosmosdb-primary-key";
const databaseId = "your-database-id";
const containerId = "your-container-id";
const client = new CosmosClient({ endpoint: endpointUri, key: primaryKey });
const container = client.database(databaseId).container(containerId);
const querySpec = {
query: "SELECT VALUE COUNT(1) FROM c"
};
container.items.query(querySpec).fetchAll().then((result) => {
const count = result.resources[0];
console.log(`Number of items in the container: ${count}`);
});
Объяснение.
Этот метод использует пакет SDK JavaScript для Azure Cosmos DB для выполнения запроса SQL и получения количества элементов в контейнере. Метод fetchAll
используется для выполнения запроса и получения набора результатов, а счетчик извлекается из массива ресурсов.
Получить количество элементов в контейнере Azure Cosmos DB можно различными способами. В этой статье мы рассмотрели три различных подхода: использование SQL-запроса, использование.NET SDK и использование JavaScript SDK. Каждый метод предоставляет гибкий способ получения количества элементов в зависимости от предпочитаемого вами языка программирования и среды разработки.