У меня есть AWS Таблица DynamoDB со следующей структурой:
Я пытаюсь вернуть все элементы, которые имеют по крайней мере один RequestItem с идентификатором 3401. Вот что я пробовал до сих пор (c# код):
IAmazonDynamoDB client = new AmazonDynamoDBClient(
new BasicAWSCredentials(configuration["AccessKey"], configuration["SecretKey"]),
RegionEndpoint.USEast1);
var request = new ScanRequest
{
TableName = "dynamo-table-name",
ExpressionAttributeNames = new Dictionary<string, string>
{
{"#requestItems", "RequestItems"},
{"#requestId", "Id"}
},
ExpressionAttributeValues = new Dictionary<string, AttributeValue>
{
{":val", new AttributeValue {N = "3401"}}
},
FilterExpression = "contains(#requestItems.#requestId, :val)"
};
var response = await client.ScanAsync(request);
Я сделал несколько изменений в FilterExpression (используя простое «=» вместо «Содержит» ) но ... я все еще не вернул результаты. Запрос проходит без ошибок, но в результате получается пустой список.
Однако тот же код работает для свойств, которые не являются коллекциями (например, Contact.EmailAddress)
Чего мне не хватает?
[РЕДАКТИРОВАТЬ]
Я попробовал другое предложенное решение:
var request = new ScanRequest
{
TableName = "dynamo-table-name",
ExpressionAttributeNames = new Dictionary<string, string>
{
{"#requestItems", "RequestItems"}
},
ExpressionAttributeValues = new Dictionary<string, AttributeValue>
{
{
":val",
new AttributeValue
{
L = new List<AttributeValue>
{
{
new AttributeValue
{
M = new Dictionary<string, AttributeValue>
{{"Id", new AttributeValue {N = "3401"}}}
}
}
}
}
}
},
FilterExpression = "contains(#requestItems, :val)"
};
var response = await client.ScanAsync(request);
, но я все еще не получаю результаты.