发电机查询中的运算符OR

Operator OR in dynamo query

本文关键字:运算符 OR 查询 发电机      更新时间:2023-12-01

我正在尝试使用aws-sdk和'OR'运算符进行查询,如下所示:

{ TableName: 'Movies',
  KeyConditionExpression: '#year = :year or #title = :title',
  ExpressionAttributeNames: { '#year': 'year', '#title': 'title' },
  ExpressionAttributeValues: { ':year': 1985, ':title': 'The Breakfast Club' } }

我得到了这个:

{ [ValidationException: Invalid operator used in KeyConditionExpression: OR]
  message: 'Invalid operator used in KeyConditionExpression: OR',
  code: 'ValidationException',
  time: Mon Apr 04 2016 11:36:22 GMT+0200 (Paris, Madrid (heure d’été)),
  requestId: '827M149G5IMJ1BPM4J883DMCJNVV4KQNSO5AEMVJF66Q9ASUAAJG',
  statusCode: 400,
  retryable: false,
  retryDelay: 0 }

我使用的是标准的亚马逊发电机样本数据文件(电影,这里)-

所以我的问题是,如何使用运算符"OR"进行Dynamo查询?

感谢:)

尝试使用类似的FilterExpression

'FilterExpression' => '#year = :year or title = :title' ,

我认为keyconditions指的是hash和range键条件。。。如果你的年份和标题属性不是哈希和范围键,请尝试使用Filterexpression或Condition表达式,如果我错了,请纠正我。。。。

谢谢@x-code,这帮助我发现我在查询键,而不是属性。

所以我喜欢这样做:

{
    TableName: "Movies",
    FilterExpression: "#title = :title or #title = :titletwo",
    ExpressionAttributeNames: {
        "#title": "title"
    },
    ExpressionAttributeValues: {
         ":title": {'S':'King Kong'},
         ":titletwo" : {'S':'Lifeboat'}
    }
}

我还使用了扫描方法,而不是查询条件中要提到的哈希。