我们正在使用dynamo数据库扫描功能来像这样从dynamo中获取所有数据,并且效果很好:
var myScanConditions = new List<ScanCondition>();
myScanConditions .Add(new ScanCondition("PartitionKey", ScanOperator.BeginsWith, "data"));
var myData= await Context.ScanAsync(myScanConditions ).GetRemainingAsync();
//some code to filter some data from above
我们的dynamo db分区键就像
data#rec1
data#rec2
data#rec3
and so on
我想检查一下是否可以将Scan替换为Query。我尝试通过将扫描条件传递给Query来使用以下代码,但看起来不正确。它什么也没回报。
var myData= await Context.QueryAsync("data", myScanConditions );
所以我的问题是有一个选项可以为QueryAsync方法的分区键提供部分文本,并且仍然从dynamo返回所有记录。例如,在上述情况下,如果我只是将“ 数据”(部分文本)传递给查询异步。
有没有办法做到这一点?
谢谢
答案 0 :(得分:1)
不幸的是,您无法使用查询来搜索分区键。查询要求并且仅支持对分区键使用equal运算符。
如果您确实需要搜索表中的所有记录,则尽管要检查所有数据都是有代价的,但是您必须执行一次扫描,因为这正是扫描的目的。
要考虑的一些想法:
参考:
答案 1 :(得分:0)
您必须具有复合(哈希键+排序键)主键才能使用查询。
如果将“数据”作为哈希(分区)键,并将rec1,rec2,rec3作为排序键,则可以仅使用“数据”进行查询。