2017-03-21 46 views
0
[{ 
    "forms": [{ 
     "id": "f1", 
     "title": "Form1", 
     "update_history": [{ 
      "version": "A", 
      "updated_at": "2016-12-10 12:12:10" 
     }, { 
      "version": "B", 
      "updated_at": "2017-01-01 05:17:19" 
     }, { 
      "version": "C", 
      "updated_at": "2017-02-07 03:22:39" 
     }] 
    },{ 
     "id": "f2", 
     "title": "Form2", 
     "update_history": [{ 
      "version": "B", 
      "updated_at": "2016-12-10 12:12:10" 
     }, { 
      "version": "C", 
      "updated_at": "2017-01-01 05:17:19" 
     }, { 
      "version": "D", 
      "updated_at": "2017-02-07 03:22:39" 
     }] 
    },{ 
     "id": "f3", 
     "title": "Form13", 
     "update_history": [{ 
      "version": "A", 
      "updated_at": "2016-12-10 12:12:10" 
     }, { 
      "version": "E", 
      "updated_at": "2017-01-01 05:17:19" 
     }, { 
      "version": "F", 
      "updated_at": "2017-02-07 03:22:39" 
     }] 
    }] 
}] 

上記のデータはDynamo-DBテーブルに格納されています。フォームオブジェクトは親オブジェクトです。 update_historyネストされたオブジェクトには3つのリストデータがあります。バージョンAのすべてのリストデータが必要です。同じ質問をしてください。DynamoDBのネストされたJson属性のFilterExpressionを使用したSCANクエリの適用方法PHPのクエリ

答えて

1

update_historyは、リストデータ型であり、その上にマップオブジェクトが含まれています。これは基本的にはDynamoDBデータモデルの複合構造です。

と仮定すると、version Aが常にリストの最初のオカレンスになると仮定すると、FilterExpressionが動作するはずです。この仮定が真でない場合、FilterExpressionは機能しません。

これは、上記のデータモデルで使用できる唯一のオプションです。マップデータ型またはリストデータ型のみを再設計できる場合は、代替ソリューションについて考えることができます。

次のコードでは、JavaScriptである: -

あなたがPHPコードに変換することができます。 AWS SDK APIのコンセプトはすべての言語で同じです。

FilterExpression : 'update_history[0].version = :versionVal', 
    ExpressionAttributeValues : { 
     ':versionVal' : 'A' 
    } 
関連する問題