我的表中有2个LSI,带有主分区键和主分类键
Org-ID - 主分区密钥
ClientID-主要排序键
性别 - LSI
部分 - LSI
查询具有一个LSI的表没有问题,但是如何在表模式中提及2个LSI.
var params = {
TableName:"MyTable",
IndexNames: ['ClientID-Gender-index','ClientID-Section-index'],
KeyConditionExpression : '#Key1 = :Value1 and #Key2=:Value2 and #Key3=:Value3',
ExpressionAttributeNames:{
"#Key1":"Org-ID",
"#Key2":"Gender",
"#Key3":"Section"
},
ExpressionAttributeValues : {
':Value1' :"Microsoft",
':Value2':"Male",
':Value3':"Cloud Computing"
}};
Run Code Online (Sandbox Code Playgroud)
任何人都可以在IndexName(第3行)或KeyConditionExpression(第4行)中解决问题,我不确定.
问题
条件可以是长度1或2
Jar*_*eld 13
您一次只能查询一个DynamoDB索引.您不能在同一查询中使用多个索引.
一个简单的替代方法是使用单个索引并应用查询过滤器,但这可能需要扫描大量记录,并且过滤器仅减少通过网络传输的数据量.
更高级的替代方案是制作复合键.您很可能希望在此用例中使用GSI而不是LSI.通过创建一个新的列,即Key1,Key2和Key3的字符串连接,您可以使用此GSI同时搜索所有三个键.这将通过重复数据使每个单独的记录更大,但它允许更复杂的查询模式.
| 归档时间: |
|
| 查看次数: |
4920 次 |
| 最近记录: |