我需要根据一个标准计算记录数。 ScanItemCount不使用过滤器表达式,因此我想探索获取记录总数的最佳方法。
下面是我用来获取计数的代码示例。有更好的替代方法吗?另外,如果数据库中有给定客户的10,000条记录,那么查询会返回准确的计数,还是我必须使用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();
我也想避免返回所有列,而是返回标量结果。