使用具有“ and”运算符的多个条件的FilterExpression进行的扫描操作

时间:2019-04-03 13:56:56

标签: amazon-web-services go amazon-dynamodb

我正在Go中编写一个lambda函数,并将DynamoDB用作数据库。

我需要编写具有多个条件的扫描操作(例如field1 = value1和field2 = value2和field3 = value3)。

我正在根据用户提供的参数/条件创建一个FilterExpression字符串。

我的过滤器表达式如下:

(#field1 = :field1Val) and (#field2 = :field2Val)

我还将在映射中提供ExpressionAttributeNames和ExpressionAttributeValues到扫描操作输入。但是,我没有得到任何结果(计数= 0)。

如果仅指定一个条件,或者使用“或”运算符而不是“ and”运算符,则会得到结果。

看起来像第二个条件(#field2 =:field2Val),即使我使用任何字段(field3,field4等)也总是导致“ false”。

有指针吗?

在哪里可以看到该查询/扫描操作的日志?

1 个答案:

答案 0 :(得分:0)

我遇到了问题。

过滤条件字符串正确-

(#field1 = :field1Val) and (#field2 = :field2Val)

我在循环中查找用户指定的搜索参数。

代码中有一个错误,我为所有属性名称使用了相同的变量名称。

attributeName := "field1"
attributeNamemap["#field1"] = &attributeName

此“ attributeName”字段用于所有搜索参数。 这是造成问题的原因,我使用了不同的变量,它开始起作用。