DynamoDb.net:添加多个扫描条件

时间:2018-06-27 13:10:40

标签: c# amazon-dynamodb

我在这里使用Dynamodb.net。如何添加多个扫描条件,以便根据这些条件过滤掉数据。 我正在使用以下代码:

var creds = new BasicAWSCredentials(awsId, awsPassword);
var dynamoClient = new AmazonDynamoDBClient(creds, awsDynamoDbRegion);
var context = new DynamoDBContext(dynamoClient);
List<ScanCondition> conditions = new List<ScanCondition>();
//  conditions.Add(new ScanCondition("Id", ScanOperator.Equal, myId));
conditions.Add(new ScanCondition("name", ScanOperator.Equal, myName));
var response = await context.ScanAsync<Data>(conditions).GetRemainingAsync();
return response;

在上面的代码中,如果我添加2个扫描条件,则它不起作用。但确实有一个条件。不知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:4)

您的代码看起来不错,但有一个警告:扫描条件适用于非关键属性

我要走出去,假设buttonsStack.topAnchor.constraint(equalTo: adImage.bottomAnchor, constant: 15).isActive = true 是表的分区键(或排序键)。如果是这样,那就是为什么您不能在扫描条件下使用它。您可以添加多个扫描条件,但它们必须全部用于非关键属性。

为了指定关键条件,必须使用Query操作,而不是Scan

假设您的表只有一个主键,没有排序键,那么下面的示例应该可以工作。但是,如果表还具有排序键,则您的查询也必须包含排序键,因此下面的示例将需要稍作修改。

Id