从 AWS DynamoDB 数据库中检索多个主键值的行
Retrieve rows for multiple primary key values from AWS DynamoDB database
我想说的是:
select * from myTable where pkName in ('john', 'fred', 'jane')
但似乎没有提供数组中项目列表的本机方法。我的查询正在运行并检索单个主键的值,但希望能够传入多个主键。通过查看控制台中的 DynamoDb 页面,这似乎是不可能的,但是有没有好的解决方法?我的 KeyConditionExpression
中只有多个 OR
和一个非常复杂的 ExpressionAttributeValues
吗?
我引用的是这个页面:
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
并使用基于以下代码(可在以下地址找到):
var params = {
ExpressionAttributeValues: {
':s': {N: '2'},
':e' : {N: '09'},
':topic' : {S: 'PHRASE'}
},
KeyConditionExpression: 'Season = :s and Episode > :e',
ProjectionExpression: 'Title, Subtitle',
FilterExpression: 'contains (Subtitle, :topic)',
TableName: 'EPISODES_TABLE'
};
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/dynamodb-example-query-scan.html
您正在寻找 batchGetItem
函数,已记录 here。
您还可以使用 DocumentClient 和 batchGet。
const AWS = require('aws-sdk');
const dbClient = new AWS.DynamoDB.DocumentClient({ region: 'ap-south-1' });
exports.handler = (event, context, callback) => {
var cartItems=JSON.parse(event.body);
let scanningtable = {
RequestItems: {
COOLERS : {
Keys: [
{
"ITEM_ID": 379
},
{
"ITEM_ID": 376
}
],
ProjectionExpression: "ITEM_ID, #N,CATEGORY, SUB_CATEGORY, BRAND, SELL_RATE",
ExpressionAttributeNames: {
"#N": "NAME"
},
}
}
};
dbClient.batchGet(scanningtable, function (err, data) {
if (err) {
callback(err, null);
} else {
var response = {
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": JSON.stringify(data),
};
callback(null, response);
}
});
};
我想说的是:
select * from myTable where pkName in ('john', 'fred', 'jane')
但似乎没有提供数组中项目列表的本机方法。我的查询正在运行并检索单个主键的值,但希望能够传入多个主键。通过查看控制台中的 DynamoDb 页面,这似乎是不可能的,但是有没有好的解决方法?我的 KeyConditionExpression
中只有多个 OR
和一个非常复杂的 ExpressionAttributeValues
吗?
我引用的是这个页面: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
并使用基于以下代码(可在以下地址找到):
var params = {
ExpressionAttributeValues: {
':s': {N: '2'},
':e' : {N: '09'},
':topic' : {S: 'PHRASE'}
},
KeyConditionExpression: 'Season = :s and Episode > :e',
ProjectionExpression: 'Title, Subtitle',
FilterExpression: 'contains (Subtitle, :topic)',
TableName: 'EPISODES_TABLE'
};
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/dynamodb-example-query-scan.html
您正在寻找 batchGetItem
函数,已记录 here。
您还可以使用 DocumentClient 和 batchGet。
const AWS = require('aws-sdk');
const dbClient = new AWS.DynamoDB.DocumentClient({ region: 'ap-south-1' });
exports.handler = (event, context, callback) => {
var cartItems=JSON.parse(event.body);
let scanningtable = {
RequestItems: {
COOLERS : {
Keys: [
{
"ITEM_ID": 379
},
{
"ITEM_ID": 376
}
],
ProjectionExpression: "ITEM_ID, #N,CATEGORY, SUB_CATEGORY, BRAND, SELL_RATE",
ExpressionAttributeNames: {
"#N": "NAME"
},
}
}
};
dbClient.batchGet(scanningtable, function (err, data) {
if (err) {
callback(err, null);
} else {
var response = {
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": JSON.stringify(data),
};
callback(null, response);
}
});
};