使用DynamoDbContext检查项目是否存在?

时间:2017-12-23 05:49:09

标签: .net amazon-dynamodb aws-sdk

有没有办法检查DynamoDbContext中是否存在不返回该项目的项目?目前,在.NET中我使用的是Load,但这会返回该项目。是否有一种方法只根据存在返回true或false?

2 个答案:

答案 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)"
};