繁体   English   中英

DynamoDB。 如何使用包含内容扫描列表

[英]DynamoDB. How to scan list with contains

ValueMap attributes = new ValueMap()
.withBoolean( ":p_deleted", true )
.withString( ":p_prefix", prefix );
ScanSpec scanSpec = new ScanSpec()
.withFilterExpression( UAwsBasic.DATABASE_JSON_DEFINITION_NAME + ".deleted = :p_deleted and " + dynamoDbCommon.RANGE_KEY_NAME + " contains :p_prefix" ).withValueMap( attributes );

ItemCollection< ScanOutcome > items1 = dynamoDbCommon.scanList(getTableName(), scanSpec );

如何获得物品清单?

我需要获取未删除的带有前缀的项目。

我有一个错误:

Caused by: com.amazonaws.AmazonServiceException: Invalid FilterExpression: Syntax error; token: "contains", near: "path contains :p_prefix"

我试过写类似的扫描请求:

ScanSpec scanSpec = new ScanSpec().withScanFilters( new ScanFilter[] { typeFilter, deletedFilter } ).withConditionalOperator( ConditionalOperator.AND );

但这是行不通的。

 ValueMap values = new ValueMap().withString( ":p_status", "READY" ).withString( ":p_prefix", prefix );

NameMap names = new NameMap().with( "#status_name", "status" ).with( "#path_name", CDynamoDbCommon.RANGE_KEY_NAME );


scanSpec = new ScanSpec()
    .withFilterExpression( UAwsBasic.DATABASE_JSON_DEFINITION_NAME + ".#status_name = :p_status AND contains( #path_name , :p_prefix)" )
    .withNameMap( names ).withValueMap( values )
    .withMaxResultSize( 10 ).withExclusiveStartKey( CDynamoDbCommon.PRIMARY_KEY_NAME, primaryLast, CDynamoDbCommon.RANGE_KEY_NAME, hashLast );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM