我可以使用ComparisonOperator.IN在我的本地二级索引的排序键上过滤DynamoDB中的查询结果吗?

时间:2016-05-06 10:25:34

标签: java java-8 amazon-dynamodb

我正在尝试使用排序键上的ComparisonOperator IN执行查询过滤器,但是我收到此错误。

  

QueryFilter只能包含非主键属性

我知道ComparisonOperator IN不可索引,这就是为什么我没有将它设置为RangeKeyCondition。但是,我只想对查询结果执行扫描过滤。

这是我的代码:

    package kingsley.realheartrate;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.content.Intent;

 public class MainActivity extends AppCompatActivity {

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

}

public void onClick(View v) {

    Intent newActivityIntent = new Intent(MainActivity.this, display.class);


    newActivityIntent.putExtra("aString", "You have taken the wise step  of knowing your heart");


    startActivity(newActivityIntent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

public void onButtonClick(View v)
{
 if(v.getId() == R.id.HRlink)
 {
     Intent i = new Intent(MainActivity.this, display.class);
     startActivity(i);
 }
}



@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
    }

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方法,但对我来说效果很好。

我使用另一个GSI来查询表,这样我正在过滤的排序键不再是主键。

我愿意接受其他解决方案或评论:)