运算符或发电机查询

时间:2016-04-04 09:49:02

标签: javascript node.js amazon-web-services amazon-dynamodb

我正在尝试使用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 }

我正在使用标准亚马逊发电机样本数据文件(Movies, here) -

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

谢谢:)

2 个答案:

答案 0 :(得分:1)

尝试使用FilterExpression,如

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

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

答案 1 :(得分:0)

谢谢你@ x-code这帮助我看到我在查询我的密钥而不是我的属性。

所以我喜欢这样:

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

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