Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb 使用多个本地二级索引Dynamodb进行查询_Amazon Dynamodb - Fatal编程技术网

Amazon dynamodb 使用多个本地二级索引Dynamodb进行查询

Amazon dynamodb 使用多个本地二级索引Dynamodb进行查询,amazon-dynamodb,Amazon Dynamodb,我的表中有2个LSI,其中有一个主分区键和一个主排序键 组织ID-主分区密钥 ClientID-主排序键 性别-大规模集成电路 第节-大规模集成电路 我对查询具有一个LSI的表没有问题,但是如何在表模式中提到2个LSI var params = { TableName:"MyTable", IndexNames: ['ClientID-Gender-index','ClientID-Section-index'], KeyConditionExpression : '#Key1 = :

我的表中有2个LSI,其中有一个主分区键和一个主排序键

组织ID-主分区密钥

ClientID-主排序键

性别-大规模集成电路

第节-大规模集成电路

我对查询具有一个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"
}};
谁能在索引名(第3行)或KeyConditionExpression(第4行)中解决这个问题,我不确定

发行


条件的长度只能为1或2

一次只能查询一个DynamoDB索引。不能在同一查询中使用多个索引

一个简单的替代方法是使用单个索引并应用查询筛选器,但这可能需要扫描大量记录,而筛选器只会减少通过网络传输的数据量


更高级的替代方法是制作复合键。对于这个用例,您很可能希望使用GSI,而不是LSI。通过创建一个新列,即Key1、Key2和Key3的字符串串联,可以使用此GSI同时搜索所有三个键。这将通过重复数据使每个记录变大,但它允许更复杂的查询模式。

如何应用查询过滤器?同时具有FilterExpression和KeyConditionExpression?