Изучение нескольких методов получения количества элементов в контейнере Azure Cosmos DB

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. Каждый метод предоставляет гибкий способ получения количества элементов в зависимости от предпочитаемого вами языка программирования и среды разработки.