C# AWS DynamoDB:查询在控制台上工作,但在.NET代码上不工作
我有一个DynamoDB查询,它在AWS控制台上运行良好,但在代码上却没有 以下是我在控制台上的查询: 下面是我查询它的c#代码:C# AWS DynamoDB:查询在控制台上工作,但在.NET代码上不工作,c#,amazon-web-services,amazon-dynamodb,dynamodb-queries,C#,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,我有一个DynamoDB查询,它在AWS控制台上运行良好,但在代码上却没有 以下是我在控制台上的查询: 下面是我查询它的c#代码: var query = new QueryOperationConfig { KeyExpression = new Expression { ExpressionStatement = "#pkey = :v_pkey and #ske
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();
var query=new QueryOperationConfig
{
KeyExpression=新表达式
{
ExpressionStatement=“#pkey=:v#pkey和#skey>=:v#skey”,
表达式属性名称={
{#pkey”,“MailingId},
{#skey”,“RegistroCarteiraId”},
},
ExpressionAttributeValues=新字典()
{
{“:v_pkey”,新原语(“62”,真)},
{“:v_skey”,新原语(“00e0bbfc-aed0-4f0e-acef-a3623a9f9694”),
},
},
BackwardSearch=false,
一致性阅读=正确,
极限=1,
FilterExpression=新表达式
{
表达式statement=“#psituacao=:v#psituacao和属性#不存在(#pdisponibilidade)”,
表达式属性名称=
{
{#psituacao”,“Situacao”},
{pdisponibilidade”,“Disponibilidade}
},
表达式属性值=
{
{“:v_psituacao”,新原语(“1”,真)},
}
}
};
var search=table.Query(查询);
var docs=await search.GetNextSetAsync();
我没有得到任何错误,结果只有一个空数组。如果我将排序键更改为不同的值,它会工作,但对于这个特定的值,它不会
我整天都在做这件事,不知道出了什么问题
任何帮助都将不胜感激
谢谢问题在于限制1 正如我发现的,筛选只发生在获取的项目上,并且,由于我仅获取1个项目,因此当筛选发生时,结果没有与条件匹配的记录
取消限制1解决了问题。问题在于限制1 正如我发现的,筛选只发生在获取的项目上,并且,由于我仅获取1个项目,因此当筛选发生时,结果没有与条件匹配的记录
取消限制1解决了问题。添加更多信息。限制控制服务在返回之前评估的项目数。SDK不会对该值执行任何操作。因此,如果将其设置为1,服务将查看“MailingId”分区中的第一项,查看它是否匹配排序键查询和筛选器表达式并返回。如果该项的计算结果不是true,则它将返回0项。并不是说您应该这样做,而是您可以一直调用GetNextSetAsync,它会在“MailingId”分区中分页,并最终返回您的项目。这不是一种有效的搜索方式。没错!我后来才意识到。。。但最后我改变了我的数据,这样我就可以在不需要分页等的情况下得到我所需要的。不过这是一个很好的澄清!添加更多信息。限制控制服务在返回之前评估的项目数。SDK不会对该值执行任何操作。因此,如果将其设置为1,服务将查看“MailingId”分区中的第一项,查看它是否匹配排序键查询和筛选器表达式并返回。如果该项的计算结果不是true,则它将返回0项。并不是说您应该这样做,而是您可以一直调用GetNextSetAsync,它会在“MailingId”分区中分页,并最终返回您的项目。这不是一种有效的搜索方式。没错!我后来才意识到。。。但最后我改变了我的数据,这样我就可以在不需要分页等的情况下得到我所需要的。不过这是一个很好的澄清!