2016-04-28 14 views
2

私の理解によると、 次のいずれかの条件が満たされるまで、クエリ操作で前述のインデックスの検索が行われます。FilterExpressionが空の結果とlastEvaluatedKeyを返すDynamoDB queryPage操作

  • 結果セットが使い果たされました。
  • 検索される項目の数が指定されている場合、Limitパラメータの値に達します。
  • 検索されるデータの量は、最大結果セットのサイズ制限の1 MBに達します。 だからDynamoDBのクエリは、上記の基準に従って結果をフェッチし、空集合とLastEvaluatedKeyを返しますので、それは、あなたに何も結果を返さないかもしれないという、かなり可能であるので、それはFilterExpressionを適用するHere

を文書化

しかし、私はまた、スキャン操作とは異なりdocumentation

に以下を読んで、クエリ操作は、空の結果セットとLastEvaluatedKey値の両方を返すことはありません。

誰かが、上記の文書が実際に意味することを説明するのに助けてもらえますか? 制限FilterExpression

ため、実際にはときに私のユーザーqueryPage API私はつまり、私は空のセットだけでなく、LastEvaluatedKeyを取得しています、それの反対を取得しています。

私の上記の理解は正しいですか?空の結果とlastEvaluatedKey値の両方を取得することは可能ですか?または私は空の結果を得ているために何かが不足していますか?

+0

キーを取得する可能性がありますが、lastEvaluatedKeyでも値を取得していますか? –

+0

はい。私は価値を得ている。 – manyu

答えて

0

私はまた、あなたと同じ問題で苦労しています。文書を読んだ後、私は次の理由を説明しています。 Amazonのドキュメントによると、「クエリ操作では、DynamoDBはソートされた順序でアイテムを取得し、KeyConditionExpressionと存在する可能性のあるFilterExpressionを使用してアイテムを処理します。

なぜそうした結果が得られるのか説明しました。フィルター操作は照会結果の後で処理されるため、FilterExpressionを適用してもしなくても、照会操作に違いはありません。そのため、lastEvaluatedKeyが表示され、FilterExpressionを適用しない場合と違いはありません。

フィルタリングする列であるグローバル・セカンダリ・インデックスを使用して欲しいのは、ソート・キーとして使用できます。この場合、withRangeKeyCondition()を使用して照会できます。

関連する問題