我正在尝试使用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查询?
谢谢:)
答案 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'}
}
}
我还使用了扫描方法而不是在查询条件中提到的查询。