2017-07-09 19 views
1

私は、パーティション・キーカテゴリとソート・キーtinponIdを得セカンダリインデックスと Tinpon私のテーブルを照会してみてください。私の目標は、特定の言葉で項目を除外することです。私の最初の考えは、負の値を比較することです: keyConditionExpression = "category = :category AND tinponId != :tinponId" しかし、同等のものだけがある=の比較です。その後、私はserval他の方法(悲しいことに存在しない)を試みた: keyConditionExpression = "category = :category NOT tinponId = :tinponId" keyConditionExpression = "category = :category AND tinponId <> :tinponId" keyConditionExpression = "category = :category AND tinponId < :tinponId AND tinponId > :tinponId" the AWS guideに続いて等しくない comparissonはありません。なぜそうなのか? idsのリストを除いてDynamoDBを照会する方法はありますか、アイテム全体を取得して後で手動でフィルタリングする唯一のオプションですか?DynamoDBクエリで** not equal **比較がないのはなぜですか?

答えて

3

KeyConditionExpressionは、ソートキーと等しくないことを許可していません。ただし、は「<」>と等しくないので、FilterExpressionに使用できます。

KeyConditionExpression : 'category = :category',  
FilterExpression : 'tinponId <> :tinponIdVal', 
ExpressionAttributeValues : { 
    ':category' : 'somevalue', 
    ':tinponIdVal' : 'somevalue' 
} 
+0

私の** Tinpon **テーブルのプライマリキーとして** tinponId **を選択して、フィルタ式に非プライマリキー属性のみを含めることができます。別の解決方法がありますか、または提案されたフィルタリング方法を使用するためにテーブルのデザインを変更する必要がありますか? – Knowledge

+2

GSI(および異なるパーティションキーを持つクエリGSI)を使用するか、別のパーティションキーを持つようにメインテーブルのデザインを変更する必要があります。 – notionquest

関連する問題