我注意到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))
答案 0 :(得分:3)
在文档Select中讨论了这种情况。您必须阅读很多东西才能找到答案,这并不理想。
如果查询或扫描全局二级索引,则只能请求 投影到索引中的属性。全球二级指数 查询无法从父表中获取属性。
基本上:
如果查询父表,则默认情况下会获取所有属性。
如果查询LSI,则默认情况下会获取所有属性-如果所有属性都投影到索引中(这样就不需要花费额外费用),则从LSI中的投影中检索它们;否则从基表中检索它们(这将使您花费更多的阅读时间)。
如果查询或扫描GSI,则只能请求投影到索引中的属性。 GSI查询无法从父表中获取属性。