[{
"forms": [{
"id": "52b55960-023e-11e7-9140-f3c1d163524b",
"title": "Default Form",
"update_history": [{
"version": "1",
"updated_at": "2016-12-10 12:12:10"
}, {
"version": "2",
"updated_at": "2017-01-01 05:17:19"
}, {
"version": "3",
"updated_at": "2017-02-07 03:22:39"
}, {
"version": "4",
"updated_at": "2017-03-03 02:28:56"
}, {
"version": "5",
"updated_at": "2017-01-11 07:01:22"
}]
}]
}]
我将上面的Json存储在Dynamo-DB表中。表单对象是父对象。我在update_history嵌套对象中存储了表单更新的详细版本和updated_at。我想要版本2的updated_at。请建议我,以下查询有什么问题。我得到了空洞的结果。
`$response = $client->scan([
'TableName' => 'TableName',
'ProjectionExpression' => 'Json.forms.update_history.updated_at',
'ExpressionAttributeValues' => [
':val1' => ['S' => '52b55960-023e-11e7-9140-f3c1d163524b'],
':val2' => ['S' => '2']
],
'FilterExpression' => 'id = :val1 and Json.forms.update_history.version = :val2',
]);`
答案 0 :(得分:1)
请参阅以下链接中的DocumentPath
示例,并尝试使用 deference operator 。
对于嵌套属性,使用构造文档路径 解除引用运算符。
如果您不知道deference运算符(即index),则无法按照您的尝试过滤数据。
示例: - 强>
访问列表元素: -
MyList[0]
AnotherList[12]
ThisList[5][11]
访问地图元素: -
MyMap.nestedField
MyMap.nestedField.deeplyNestedField
您拥有地图和列表的组合,因此您需要FilterExpression
。