Get items count for a particular partition key using .net core

0

How can I get items count for a particular partition key using .net core preferably using Object Persistence Interface or Document Interfaces?

Since I do not see any docs any where, currently I get the number of items count by retrieve all the item and get its count, but it is very expensive to do the reads.

What is the best practices for such item count request? Thank you.

已提問 4 年前檢視次數 453 次
1 個回答
0

I just realized that using low level interface in QueryRequest one can set Select = "COUNT" then when calling QueryAsync() orQuery() will return the count only as a integer only. Please refer to code sample below.

private static QueryRequest getStockRecordCountQueryRequest(string tickerSymbol, string prefix)
        {
            string partitionName = ":v_PartitionKeyName";
            string sortKeyPrefix = ":v_sortKeyPrefix";

            var request = new QueryRequest
            {
                TableName = Constants.TableName,
                ReturnConsumedCapacity = ReturnConsumedCapacity.TOTAL,
                Select = "COUNT",
                KeyConditionExpression = $"{Constants.PartitionKeyName} = {partitionName} and begins_with({Constants.SortKeyName},{sortKeyPrefix})",
                ExpressionAttributeValues = new Dictionary<string, AttributeValue>
                {
                    { $"{partitionName}", new AttributeValue {
                        S = tickerSymbol
                    }},
                    { $"{sortKeyPrefix}", new AttributeValue {
                        S = prefix
                    }}
                },
                // Optional parameter.
                ConsistentRead = false,
                ExclusiveStartKey = null,
            };
            return request;
        }

but I would like to point out that this still will consumed the same read units as retrieving all the item and get its count by yourself. but since it is only returning the count as an integer, it is a lot more efficient then transmitting the entire items list cross the wire.

I think using DynamoDB Streams in a more proper way to get the counts for large project. It is just a lot more complicated to implement.

已回答 4 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南