我有一个DynamoDB查询,该查询在AWS控制台上运行良好,但在代码上却没有。
现在这是我的C#代码来查询它:
var query = new QueryOperationConfig
{
KeyExpression = new Expression
{
ExpressionStatement = "#pkey = :v_pkey and #skey >= :v_skey",
ExpressionAttributeNames = {
{ "#pkey", "MailingId" },
{ "#skey", "RegistroCarteiraId" },
},
ExpressionAttributeValues = new Dictionary<string, DynamoDBEntry>()
{
{ ":v_pkey", new Primitive("62", true) },
{ ":v_skey", new Primitive("00e0bbfc-aed0-4f0e-acef-a3623a9f9694") },
},
},
BackwardSearch = false,
ConsistentRead = true,
Limit = 1,
FilterExpression = new Expression
{
ExpressionStatement = "#psituacao = :v_psituacao and attribute_not_exists(#pdisponibilidade)",
ExpressionAttributeNames =
{
{ "#psituacao", "Situacao" },
{ "#pdisponibilidade", "Disponibilidade" }
},
ExpressionAttributeValues =
{
{ ":v_psituacao", new Primitive("1", true) },
}
}
};
var search = table.Query(query);
var docs = await search.GetNextSetAsync();
我没有错误,结果只有一个空数组。如果我将排序键更改为其他值,则可以使用,但对于此特定值,则不能...
我整天都在忙着,无法弄清楚出什么问题了。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
问题出在 LIMIT 1 。
我发现,过滤器仅发生在获取的项目上,并且由于我只提取1个项目,因此当发生过滤器时,结果中没有符合条件的记录。
取消限制1解决了这个问题。