AWS DynamoDB Scan and FilterExpression using array of hash values(使用哈希值数组的 AWS DynamoDB 扫描和 FilterExpression)
问题描述
我很难找到在 DynamoDB 表上使用 FilterExpression 进行扫描的有用示例.我在浏览器中使用 javascript SDK.
I am having a hard time finding a useful example for a scan with FilterExpression on a DynamoDB table. I am using the javascript SDK in the browser.
我想扫描我的表并仅返回那些在我传递给 Scan 的数组中具有 HASH 字段UID"值的记录
I would like to scan my table and return only those records that have HASH field "UID" values within an array I pass to the Scan
假设我有一个唯一 id 数组,它们是我的表的哈希字段我想从我的 DynamoDB 表中查询这些记录.
Lets say I have an array of unique ids that are the hash field of my table I would like to query these records from my DynamoDB table.
如下图
var idsToSearch=['123','456','789'] //array of the HASH values I would like to retrieve
var tableToSearch = new AWS.DynamoDB();
var scanParams = {
"TableName":"myAwsTable",
"AttributesToGet":['ID','COMMENTS','DATE'],
"FilterExpression":"'ID' in "+idsToSearch+""
}
tableToSearch.scan(scanParams), function(err,data){
if (err) console.log(err, err.stack); //error handler
else console.log(data); //success response
})
推荐答案
你应该使用 IN
操作符.将 Placeholders 用于属性名称和属性值也更容易.不过,我建议不要在这种情况下使用 Scan
.听起来您已经有了要查找的哈希键属性值,因此使用 BatchGetItem
.
You should make use of the IN
operator. It is also easier to use Placeholders for attribute names and attribute values. I would, however, advise against using a Scan
in this case. It sounds like you already have the hash key attribute values that you want to find, so it would make more sense to use BatchGetItem
.
无论如何,这就是你在 Java 中的做法:
Anyways, here is how you would do it in Java:
ScanSpec scanSpec = new ScanSpec()
.withFilterExpression("#idname in (:val1, :val2, :val3)")
.withNameMap(ImmutableMap.of("#idname", "ID"))
.withValueMap(ImmutableMap.of(":val1", "123", ":val2", "456", ":val23", "789"));
ItemCollection<ScanOutcome> = table.scan(scanSpec);
我会想象使用 Javascript SDK 会是这样的:
I would imagine using the Javascript SDK it would be something like this:
var scanParams = {
"TableName":"myAwsTable",
"AttributesToGet": ['ID','COMMENTS','DATE'],
"FilterExpression": '#idname in (:val1, :val2, :val3)',
"ExpressionAttributeNames": {
'#idname': 'ID'
},
"ExpressionAttributeValues": {
':val1': '123',
':val2': '456',
':val3': '789'
}
}
这篇关于使用哈希值数组的 AWS DynamoDB 扫描和 FilterExpression的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用哈希值数组的 AWS DynamoDB 扫描和 FilterExpression
基础教程推荐
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 直接将值设置为滑块 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01