kak*_*234 2 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;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如果添加2个扫描条件,则无法正常工作。但确实有一个条件。不知道我在这里做错了什么。
您的代码看起来不错,但有一个警告:扫描条件适用于非关键属性。
我要走出去,假设这Id是表的分区键(或排序键)。如果是这样,那就是为什么您不能在扫描条件下使用它。您可以添加多个扫描条件,但是它们必须全部用于非关键属性。
假设您的表只有一个主键而没有排序键,那么下面的示例应该可以工作。但是,如果表也具有排序键,则您的查询也必须包括该排序键,因此,下面的示例将需要稍作修改。
var creds = new BasicAWSCredentials(awsId, awsPassword);
var dynamoClient = new AmazonDynamoDBClient(creds, awsDynamoDbRegion);
var context = new DynamoDBContext(dynamoClient);
var opConfig = new DynamoDBOperationConfig();
opConfig.QueryFilter = new List<ScanCondition>();
opConfig.QueryFilter.Add(new ScanCondition("name", ScanOperator.Equal, myName));
var response = await context.QueryAsync<Data>(myId, opConfig).GetRemainingAsync();
return response;
Run Code Online (Sandbox Code Playgroud)