Мне нужно посчитать количество записей на основе критериев. ScanItemCount не принимает выражения фильтра, поэтому я хотел найти наилучший способ получения общего количества записей.
Ниже приведен пример кода, который я использовал для подсчета. Есть ли лучшая альтернатива этому? Кроме того, если в базе данных имеется 10000 записей для данного клиента, запрос будет возвращать точное количество, или мне придется использовать LastEvaluatedKey для итерации по результату.
var total = (long)_dbConn.Scan<int>(new ScanRequest(DynamoMetadata.GetTable<T>().Name) {
FilterExpression = "#col = :val",
ExpressionAttributeNames = new Dictionary<string, string> { { "#col", "CustomerId" } },
ExpressionAttributeValues = new Dictionary<string, AttributeValue> { { ":val", new AttributeValue(CustomerId.ToString()) } },
}, (Func<ScanResponse, IEnumerable<int>>)(r => (IEnumerable<int>)new int[1]
{
r.Count
})).Sum();
Также я хотел бы избежать возврата всех столбцов, но вместо этого скалярный результат.