web-dev-qa-db-ja.com

DynamoDBクエリに**等しくない**比較がないのはなぜですか?

テーブル Tinpon をセカンダリインデックスでクエリして、パーティションキー category とソートキー tinponIdを生成します。私の目標は、特定のtinponIdを持つアイテムを除外することです。私の最初の考えは否定的な比較をすることでしょう:keyConditionExpression = "category = :category AND tinponId != :tinponId"ですが、等しい = 比較しかありません。次に、サーバルの他の方法を試しました(残念ながら存在しません):keyConditionExpression = "category = :category NOT tinponId = :tinponId" keyConditionExpression = "category = :category AND tinponId <> :tinponId" keyConditionExpression = "category = :category AND tinponId < :tinponId AND tinponId > :tinponId"以下 AWSガイド等しくない比較はありません。なんでそうなの?そして、IDのリストを除いてDynamoDBをクエリする方法はありますか、または一連のアイテム全体を取得して後で手動でフィルタリングする唯一のオプションはありますか?

6
Knowledge

KeyConditionExpressionでは、並べ替えキーにnot equalsを使用できません。ただし、FilterExpression"Not Equalsつまり<>"を使用できます。

KeyConditionExpression : 'category = :category',    
FilterExpression : 'tinponId  <> :tinponIdVal',
ExpressionAttributeValues : {
    ':category' : 'somevalue',
    ':tinponIdVal' :  'somevalue'
}
23
notionquest