繁体   English   中英

DynamoDB查询/扫描仅返回项的子集

[英]DynamoDB query/scan only returns subset of items

我注意到DynamoDB查询/扫描只返回包含文档子集的文档,只返回它出现的键列。

这意味着我需要单独使用Batch_Get来获取这些键引用的实际文档。

我没有使用投影表达式,根据文档,这意味着应该返回整个项目。 1

如何获取查询以返回整个文档,以便我不必单独批量获取?

下面显示了一个示例代码。 它打印出找到的文档,但它们只包含主键,辅助键和排序键。

t1 = db.Table(tname)

q = { 
    'IndexName': 'mysGSI',
    'KeyConditionExpression': "secKey= :val1 AND " \
                              "begins_with(sortKey,:status)",
    'ExpressionAttributeValues': {
        ":val1": 'XXX',
        ":status": 'active-',
    }
}
res = t1.query(**q)

for doc in res['Items']:
    print(json.dumps(doc))

Select参数的文档中讨论了这种情况。 你必须阅读相当多的内容才能找到它,这并不理想。

如果查询或扫描全局二级索引,则只能请求投影到索引中的属性。 全局二级索引查询无法从父表中获取属性。

基本上:

  • 如果查询父表,则默认情况下会获取所有属性。

  • 如果您查询LSI,那么默认情况下您将获得所有属性 - 如果所有属性都投影到索引中,则从LSI中的投影中检索它们(因此不需要额外费用)或者从基表中获取(这会花费更多读取)。

  • 如果查询或扫描GSI,则只能请求投影到索引中的属性。 GSI查询无法从父表中获取属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM