4

是否可以在 DynamoDB 中使用“ OR ”、“ AND ”查询操作?

我需要知道在 Rails 中是否DynamoDB有类似"where fname = xxxx OR lname = xxxx“来自 SQL 查询?

谢谢。

4

4 回答 4

6

一般来说,没有。

DynamoDB 仅允许通过主(散列)键进行有效查找,还可以选择对“范围键”进行范围查询。其他属性未编入索引。

您可以使用Scan请求通过一组属性读取整个表过滤器,但对于大型表来说,这是一个相对昂贵且速度较慢的选项。

您可以通过创建一个包含要查询的两个值的主键来模拟 AND,并通过创建每个使用一个属性作为其主键的重复表,并同时查询两个表BatchGetItem

于 2012-02-23T22:40:45.747 回答
1

正如 BCoates 所说,答案是否定的。

如果您想要一致的读取,则不能使用 BatchGetItem。

于 2012-03-30T08:11:19.067 回答
0

虽然没有“OR”“AND”之类的东西,但是你仍然可以使用scanfilterexpression来模拟 sql 查询。

但是请记住,如果您使用扫描,则意味着将获取整个表然后进行处理,并且扫描并不总是在一次迭代中扫描整个表。所以你可能会错过一些项目。所以这种方法通常被避免,因为它非常昂贵。但这是一段使用boto3 api的python3代码,可以模拟你想要的sql查询

response = table.scan(
FilterExpression=Attr('fname').eq('xxxxx') | Attr('lname').eq('xxxxx'))

filterexpression 也有不同的运算符,如&,~

于 2017-11-16T03:37:04.163 回答
0

不,不可能使用 'OR' 运算符,例如在 KeyConditionExpression:'#hashkey = :hk_val AND #rangekey > :rk_val',

它使用And运算符来匹配 for bot HASH 和 RANGE Key。

因此,我们不能在 Dynamo Db 中使用OR 。

于 2015-11-05T09:29:00.940 回答