Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何查询DynamoDB并返回第一个匹配结果,而不是查询整个集合?_Java_Amazon Dynamodb_Dynamodb Queries - Fatal编程技术网

Java 如何查询DynamoDB并返回第一个匹配结果,而不是查询整个集合?

Java 如何查询DynamoDB并返回第一个匹配结果,而不是查询整个集合?,java,amazon-dynamodb,dynamodb-queries,Java,Amazon Dynamodb,Dynamodb Queries,我们有一些旧代码正在查询DynamoDB以查找匹配记录的列表 示例代码如下: final DynamoDBQueryExpression<MyObject> queryExp = new DynamoDBQueryExpression<MyObject>() .withHashKeyValues(myObject) .withIndexName(indexName) .withScanInde

我们有一些旧代码正在查询DynamoDB以查找匹配记录的列表

示例代码如下:

    final DynamoDBQueryExpression<MyObject> queryExp = new DynamoDBQueryExpression<MyObject>()
            .withHashKeyValues(myObject)
            .withIndexName(indexName)
            .withScanIndexForward(false)
            .withConsistentRead(true)
            .withLimit(rowsPerPage);
    final PaginatedQueryList<MyObject> ruleInstanceList = dynamoDBMapper.query(MyObject.class, queryExp);
final DynamoDBQueryExpression queryExp=new DynamoDBQueryExpression()
.withHashKeyValues(myObject)
.withIndexName(indexName)
.带CANINDEXFORWARD(假)
.与ConsistentRead一致(正确)
.带限制(行/页);
最终分页的QueryList ruleInstanceList=dynamoDBMapper.query(MyObject.class,queryExp);
这是一个缓慢的操作,因为这个查询将返回一个匹配的
MyObject
列表,我注意到我们使用它的目的就是检查这个列表是否为空

因此,我要做的只是执行查询以查找第一个元素,或者甚至是其他类型的查询,以确保计数大于0,我需要验证的是记录是否存在,以便减少延迟

我的问题是,我如何做到这一点

的文档表明:

请注意,在调用DynamoDBMapper.query时,如果需要检索整个结果集,会向DynamoDB发出多个请求。设置此选项将限制每个请求检索的项目数,而不是将检索的结果总数。使用DynamoDBMapper.queryPage从DynamoDB检索单个页面的项

要限制结果的数量,可以使用而不是query()。并对查询表达式应用
withLimit(1)

的文档表明:

请注意,在调用DynamoDBMapper.query时,如果需要检索整个结果集,会向DynamoDB发出多个请求。设置此选项将限制每个请求检索的项目数,而不是将检索的结果总数。使用DynamoDBMapper.queryPage从DynamoDB检索单个页面的项


要限制结果的数量,可以使用而不是query()。并对查询表达式应用
withLimit(1)

你可以用Limit(1)@jarmod设置
,我不认为这是
Limit
的工作原理,我测试了它,结果仍然是一个完整的列表,听起来不正确。Limit=1的单个API调用最多应返回1项。@jarmod可能是由于当前编写代码的方式,但结果仍然是完整列表,而不是1项。我在
withLimit(1)
的时候测试了它,你可能只需要设置
withLimit(1)
@jarmod我不认为
Limit
是这样工作的,我测试了它,结果仍然是一个完整的列表,听起来不正确。Limit=1的单个API调用最多应返回1项。@jarmod可能是由于当前编写代码的方式,但结果仍然是完整列表,而不是1项。我在
使用limit(1)