有没有办法检查DynamoDbContext中是否存在不返回该项目的项目?目前,在.NET中我使用的是Load
,但这会返回该项目。是否有一种方法只根据存在返回true或false?
答案 0 :(得分:2)
2018年3月:我已经搜索了当前的程序集 AWSSDK.DynamoDBv2,Version = 3.3.0.0 ,找不到任何类似于 EXISTS 的方法风格方法。
根据Anthony Neace的上述评论,以及Sony Kadavan的回答:
瓶颈在于到达Dynamo数据库服务器的延迟(REST API) 并从索引中获取。所以获取和检查将是 速度相似。 Quickly query a table if it contains a key (DynamoDB and Java)
所以我相信答案是否有没有这样的方法。您可以编写自己的包装器来获取项目(可能只获得一个属性)并返回一个布尔值,指示项目是否存在。
这是来自AWS doco,并展示了如何查询返回已定义属性集的表:
Table table = Table.LoadTable(client, "Reply");
DateTime twoWeeksAgoDate = DateTime.UtcNow - TimeSpan.FromDays(15);
QueryOperationConfig config = new QueryOperationConfig()
{
HashKey = "DynamoDB Thread 2", //Partition key
AttributesToGet = new List<string>
{ "Subject", "ReplyDateTime", "PostedBy" },
ConsistentRead = true,
Filter = new RangeFilter(QueryOperator.GreaterThan, twoWeeksAgoDate)
};
Search search = table.Query(config);
在您的情况下,只需获取一个属性并返回true / false,具体取决于您是否获得该项目。
答案 1 :(得分:0)
您可以构建如下表达式并在查询中使用。然后您可以检查计数。
var expression = new Expression
{
ExpressionStatement = "attribute_exists(attributeName)"
};