スペースや複雑さを追加せずにこれを行う安価な方法はありません。
高価な方法は、テーブル全体をスキャンしてキー属性と属性のみを取得しattributeName
、最大値を計算してから、その最大値で見つかったすべての (完全な) 項目を取得することです。
テーブル内に複合キー (ハッシュと範囲) があり、相対的な合計項目数が少ない場合は、ローカル セカンダリ インデックスが役に立ち、わずかなスペースしか消費しません。属性にインデックスを作成し、attributeName
そのインデックスを使用して各ハッシュ キーに対してクエリを実行し、"isScanIndexForward:false" と "limit:1" を使用して、その hashKey から "max" を取得できます。次に、すべての結果の最大値 (各ハッシュキーから 1 つの結果) を計算すると、取得する値がわかります。それらはすべて、逆方向スキャンとattributeName
.
複雑さを加えたい場合は、この情報を追加のテーブルに格納できます。のようなものtableName.extraInfo
で、次のような項目があります: {hashKey: "maxOfAttributeName", "value":5}
。次に、あなたput
またはupdate
メインテーブルもこのフィールドを更新すると、ほら、あなたの価値があります。データが急速に変化する場合、このアプローチに伴うトランザクションの複雑さに注意してください。