是否可以在 DynamoDB 中使用“ OR ”、“ AND ”查询操作?
我需要知道在 Rails 中是否DynamoDB
有类似"where fname = xxxx OR lname = xxxx
“来自 SQL 查询?
谢谢。
是否可以在 DynamoDB 中使用“ OR ”、“ AND ”查询操作?
我需要知道在 Rails 中是否DynamoDB
有类似"where fname = xxxx OR lname = xxxx
“来自 SQL 查询?
谢谢。
一般来说,没有。
DynamoDB 仅允许通过主(散列)键进行有效查找,还可以选择对“范围键”进行范围查询。其他属性未编入索引。
您可以使用Scan
请求通过一组属性读取整个表过滤器,但对于大型表来说,这是一个相对昂贵且速度较慢的选项。
您可以通过创建一个包含要查询的两个值的主键来模拟 AND,并通过创建每个使用一个属性作为其主键的重复表,并同时查询两个表BatchGetItem
正如 BCoates 所说,答案是否定的。
如果您想要一致的读取,则不能使用 BatchGetItem。
虽然没有“OR”、“AND”之类的东西,但是你仍然可以使用scan和filterexpression来模拟 sql 查询。
但是请记住,如果您使用扫描,则意味着将获取整个表然后进行处理,并且扫描并不总是在一次迭代中扫描整个表。所以你可能会错过一些项目。所以这种方法通常被避免,因为它非常昂贵。但这是一段使用boto3 api的python3代码,可以模拟你想要的sql查询
response = table.scan(
FilterExpression=Attr('fname').eq('xxxxx') | Attr('lname').eq('xxxxx'))
filterexpression 也有不同的运算符,如&,~
不,不可能使用 'OR' 运算符,例如在 KeyConditionExpression:'#hashkey = :hk_val AND #rangekey > :rk_val',
它使用And运算符来匹配 for bot HASH 和 RANGE Key。
因此,我们不能在 Dynamo Db 中使用OR 。