1

Cosmos DB – Get record COUNT from all Collections in all Databases (using .net)...

 2 years ago
source link: https://sqlwithmanoj.com/2021/04/01/cosmos-db-get-record-count-from-all-collections-in-all-databases-using-net/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Cosmos DB – Get record COUNT from all Collections in all Databases (using .net)

Here in this post we will use C# .net code (for beginners like me) to see how to:
1. Connect to a Cosmos DB instance
2. Get list of all Databases in a Cosmos DB
3. Iterate through all the Databases and get the list of all Collections (or Tables)
4. Get COUNT of all documents/items (or records) in these Collections

On Azure portal go to your Azure Cosmos DB instance, from Overview tab go to Keys tab and copy the “URI” & “PRIMARY READ-ONLY KEY” key values:

1. First we will use the Uri & Primary Key to connect to CosmosDB service by using DocumentClient() method.

2. Then we will form a simple query to retrieve all Databases, will use with CreateDatabaseQuery() method to retrieve list of all databases.

3. Now to get list of all Collections present in each Database we will iterate through each Database, use the CreateDocumentCollectionQuery() method using the Database instance with Self link property.

4. Now to get the Document link we will also iterate through each Collection by using CreateDocumentQuery() method.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
namespace CosmosTables
{
class ReadCosmosDB
{
static void Main(string[] args)
{
string PK = "YourPrimaryKey==";
DocumentClient cosmosClient = new DocumentClient(new Uri(EndPointUri), PK);
string sqlQuery = "SELECT * FROM d";
var dbs = cosmosClient.CreateDatabaseQuery(sqlQuery).ToList();
foreach (var db in dbs)
{
Console.WriteLine("Database: " + db.id);
Console.WriteLine("- Collections: ");
List<DocumentCollection> collections = cosmosClient.CreateDocumentCollectionQuery((String)db._self).ToList();
foreach (var collection in collections)
{
var count = cosmosClient.CreateDocumentQuery<int>(collection.SelfLink, $"SELECT value count(1) FROM c",
new FeedOptions(){EnableCrossPartitionQuery = true, MaxItemCount = 1,}).AsEnumerable().First();
Console.WriteLine("  - " + collection.Id + $", Count: " + count);
}
Console.WriteLine(Environment.NewLine);
}
Console.WriteLine("Finished reading all DB Collections");
}
}
}

Related


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK