PHP 的 DynamoDB SDK:是否可以使用嵌套项目的键扫描项目列表?
DynamoDB SDK for PHP: Is it possible to scan a list of items with key of a nested item?
我有这样的结构:
{
Id: "55e0173c485dd",
Revisions: [
{
CAS: "2132-123-123",
ComponentName: "bar"
},
{
ComponentName: "baz"
}
]
}
是否可以按列表中的 "ComponentName" 项执行扫描?
我找到了使用这样的参数进行扫描的唯一方法:
[
'ExpressionAttributeValues' => [
':component' => [
'M' => [
'ComponentName' => ['S' => 'bar']
]
]
],
'FilterExpression' => 'contains (Revisions, :component)'
];
但它会检查完整的项目匹配项,但在我的案例中无法找到具有 "CAS" 字段的项目。
我需要 MongoDB 中的“$elemMatch”之类的东西:
http://docs.mongodb.org/manual/reference/operator/query/elemMatch/
DynamoDB 当前不支持 querying/filtering 列表中映射中的属性。您可以如您所说,指定整个地图并使用表达式 "contains(path.to.list, :map)" 并在表达式属性值中指定完整地图。
话虽这么说,但如果您支付费用以通过扫描读回所有项目,您只需检索这些项目并在客户端处理它们以评估您的情况。
我有这样的结构:
{
Id: "55e0173c485dd",
Revisions: [
{
CAS: "2132-123-123",
ComponentName: "bar"
},
{
ComponentName: "baz"
}
]
}
是否可以按列表中的 "ComponentName" 项执行扫描? 我找到了使用这样的参数进行扫描的唯一方法:
[
'ExpressionAttributeValues' => [
':component' => [
'M' => [
'ComponentName' => ['S' => 'bar']
]
]
],
'FilterExpression' => 'contains (Revisions, :component)'
];
但它会检查完整的项目匹配项,但在我的案例中无法找到具有 "CAS" 字段的项目。
我需要 MongoDB 中的“$elemMatch”之类的东西:
http://docs.mongodb.org/manual/reference/operator/query/elemMatch/
DynamoDB 当前不支持 querying/filtering 列表中映射中的属性。您可以如您所说,指定整个地图并使用表达式 "contains(path.to.list, :map)" 并在表达式属性值中指定完整地图。
话虽这么说,但如果您支付费用以通过扫描读回所有项目,您只需检索这些项目并在客户端处理它们以评估您的情况。