gpt4 book ai didi

c# - DynamoDb.net : Adding multiple scan conditions

转载 作者:行者123 更新时间:2023-12-02 08:03:11 24 4
gpt4 key购买 nike

我在这里使用 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 个扫描条件,它不起作用。但确实适用于一种条件。不确定我在这里做错了什么。

最佳答案

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

我将大胆假设 Id 是表的分区键(或者可能是排序键)。如果这是真的,那么这就是为什么您不能在扫描条件下使用它的原因。您可以添加多个扫描条件,但它们必须全部针对非关键属性。

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

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

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;

关于c# - DynamoDb.net : Adding multiple scan conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com