【问题标题】:Scan operation with FilterExpression having multiple conditions with "and" operator使用带有“and”运算符的具有多个条件的 FilterExpression 进行扫描操作
【发布时间】:2019-04-04 17:49:35
【问题描述】:

我正在用 Go 编写一个 lambda 函数并使用 DynamoDB 作为我的数据库。

我需要编写一个包含多个条件的扫描操作(例如 field1 = value1 and field2 = value2 and field3 = value3)。

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

我的过滤器表达式如下:

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

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

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

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

任何指针?

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

【问题讨论】:

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


【解决方案1】:

我遇到了问题。

过滤条件字符串正确-

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

我在循环中进行迭代以找出用户指定了哪些搜索参数。

代码有错误,我对所有属性名使用了相同的变量名。

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

此“属性名称”字段用于所有搜索参数。 这导致了问题,我使用了不同的变量,它开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多