0
0
DynamodbHow-ToBeginner · 4 min read

How to Count Items in DynamoDB: Simple Guide

To count items in DynamoDB, use the Scan operation with Select: COUNT to get the total number of items in a table. For counting items matching a condition, use the Query operation with Select: COUNT and a key condition expression.
📐

Syntax

The basic syntax to count items in DynamoDB uses the Scan or Query operation with the Select parameter set to COUNT. This tells DynamoDB to return only the number of matching items, not the items themselves.

  • Scan: Reads all items in the table and counts them.
  • Query: Counts items that match a specific key condition.
  • Select: COUNT returns only the count, not the data.
javascript
const params = {
  TableName: 'YourTableName',
  Select: 'COUNT'
};

// For Query with condition
const queryParams = {
  TableName: 'YourTableName',
  KeyConditionExpression: '#pk = :pkval',
  ExpressionAttributeNames: { '#pk': 'PartitionKey' },
  ExpressionAttributeValues: { ':pkval': { S: 'someValue' } },
  Select: 'COUNT'
};
💻

Example

This example shows how to count all items in a DynamoDB table using the AWS SDK for JavaScript (v3). It uses the ScanCommand with Select: 'COUNT' to get the total number of items.

javascript
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({ region: "us-east-1" });

async function countItems() {
  const params = {
    TableName: "YourTableName",
    Select: "COUNT"
  };

  try {
    const data = await client.send(new ScanCommand(params));
    console.log(`Total items count: ${data.Count}`);
  } catch (err) {
    console.error("Error counting items:", err);
  }
}

countItems();
Output
Total items count: 42
⚠️

Common Pitfalls

Common mistakes when counting items in DynamoDB include:

  • Using Scan without Select: COUNT, which returns all items and can be slow and costly.
  • Not handling pagination when the table has more than 1 MB of data, causing incomplete counts.
  • Using Query without a proper key condition, resulting in errors or zero counts.

Always check for LastEvaluatedKey in the response and continue scanning or querying to get the full count if needed.

javascript
/* Wrong way: Scan without Select COUNT (returns all items) */
const wrongParams = {
  TableName: 'YourTableName'
};

/* Right way: Scan with Select COUNT and handle pagination */
async function countAllItems(client) {
  let count = 0;
  let ExclusiveStartKey = undefined;
  do {
    const params = {
      TableName: 'YourTableName',
      Select: 'COUNT',
      ExclusiveStartKey
    };
    const data = await client.send(new ScanCommand(params));
    count += data.Count;
    ExclusiveStartKey = data.LastEvaluatedKey;
  } while (ExclusiveStartKey);
  return count;
}
📊

Quick Reference

Summary tips for counting items in DynamoDB:

  • Use Scan with Select: 'COUNT' to count all items.
  • Use Query with Select: 'COUNT' and a key condition to count filtered items.
  • Handle pagination by checking LastEvaluatedKey to get full counts.
  • Avoid scanning large tables frequently to reduce cost and latency.

Key Takeaways

Use Scan or Query with Select set to COUNT to get item counts efficiently.
Always handle pagination with LastEvaluatedKey to count all items in large tables.
Avoid scanning entire tables frequently to save cost and improve performance.
Query requires a key condition expression to count filtered items correctly.