我正在尝试在dynamodb中执行日志表,而我的表看起来像
Pid [HashKey] || TableName [SecondaryIndex] || CreateDate [RangeKey] || OldValue ||的NewValue
10 ||产品|| 10.10.2013 00:00:01 ||鞋||裙
10 ||产品|| 10.10.2013 00:00:02 ||裙子||裤
11 || ProductCategory || 10.10.2013 00:00:01 ||鞋子||裙
19 || ProductCategory || 10.10.2013 00:00:01 ||表||扶手椅
Pid =我的主数据库表主键
TableName =我的主要数据库表名称
CreateDate =行创建日期
现在我想获得
列表其中(Pid = 10 AND TableName =“Product”)OR(Pid = 11 AND 表名= “产品分类”)
在一个请求中(它不会像这样短。它可能包含太多的表和pid)
我尝试了批处理,但我没有使用它,因为我无法使用二级索引进行查询。它需要具有相同运算符的rangekey。
我尝试过查询,但这次我无法在同一个查询中发送多个哈希密钥。
任何想法或继承?
谢谢。
答案 0 :(得分:0)
这里的问题是OR ....通常你不能在没有修改行的情况下通过单个查询操作得到这个条件,
解决方案1:您必须发出2个查询操作,并将它们附加到相同的结果集。
where (Pid = 10 AND TableName = "Product")
union
where (Pid = 11 AND TableName = "ProductCategory")
这些操作应并行运行以优化性能。
解决方案2:创建一个字段xxx来描述您的状况并将其保持在写入状态 您可以在其上创建global secondary index并执行单个查询。