DynamoDb.net: добавление нескольких условий сканирования - PullRequest
0 голосов
/ 27 июня 2018

Я использую 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 голосов
/ 30 июня 2018

Ваш код выглядит нормально, с одним предупреждением: условия сканирования для неключевых атрибутов .

Я собираюсь выйти на конечность и предположить, что 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...