DynamoDB query/scan 仅 returns 个项目子集
DynamoDB query/scan only returns subset of items
我注意到 DynamoDB query/scan 只有 return 包含文档子集的文档,只是它出现的关键列。
这意味着我需要单独 Batch_Get 来获取这些键引用的实际文档。
我没有使用投影表达式,根据文档,这意味着整个项目应该 returned。1
如何获取对 return 整个文档的查询,这样我就不必进行单独的批量获取?
下面显示了一个代码示例。它打印出找到的文档,但它们仅包含主键、辅助键和排序键。
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 参数的文档中讨论了这种情况。你必须读很多书才能找到这个,这并不理想。
If you query or scan a global secondary index, you can only request
attributes that are projected into the index. Global secondary index
queries cannot fetch attributes from the parent table.
基本上:
如果查询父级 table 则默认获取所有属性。
如果您查询 LSI,则默认情况下您会获得所有属性 - 如果所有属性都投影到索引中(这样就不需要额外费用)或从 LSI 中的投影中检索它们base table 否则(这将花费您更多的阅读次数)。
如果查询或扫描 GSI,则只能请求投影到索引中的属性。 GSI 查询无法从父 table.
获取属性
我注意到 DynamoDB query/scan 只有 return 包含文档子集的文档,只是它出现的关键列。
这意味着我需要单独 Batch_Get 来获取这些键引用的实际文档。
我没有使用投影表达式,根据文档,这意味着整个项目应该 returned。1
如何获取对 return 整个文档的查询,这样我就不必进行单独的批量获取?
下面显示了一个代码示例。它打印出找到的文档,但它们仅包含主键、辅助键和排序键。
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 参数的文档中讨论了这种情况。你必须读很多书才能找到这个,这并不理想。
If you query or scan a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.
基本上:
如果查询父级 table 则默认获取所有属性。
如果您查询 LSI,则默认情况下您会获得所有属性 - 如果所有属性都投影到索引中(这样就不需要额外费用)或从 LSI 中的投影中检索它们base table 否则(这将花费您更多的阅读次数)。
如果查询或扫描 GSI,则只能请求投影到索引中的属性。 GSI 查询无法从父 table.
获取属性