是否可以使用javascript SDK从amazon Dynamodb查询JSON数据
我需要亚马逊迪纳摩的帮助。我期待在dynamodb的特别查询 我的JSON如下所示是否可以使用javascript SDK从amazon Dynamodb查询JSON数据,javascript,json,amazon-web-services,amazon-dynamodb,aws-sdk-js,Javascript,Json,Amazon Web Services,Amazon Dynamodb,Aws Sdk Js,我需要亚马逊迪纳摩的帮助。我期待在dynamodb的特别查询 我的JSON如下所示 { blocknumber: '20', BusinessData: { BASE_UNIT: 'kg', FARMERID: 'FAINKABR0001', FARMLOCATION: 'Farm 3927', GAPINFO: {}, PLANTINGDATE: '2020-11-02T18:30:00.000Z', PRODUCEQUANTITES:
{
blocknumber: '20',
BusinessData: {
BASE_UNIT: 'kg',
FARMERID: 'FAINKABR0001',
FARMLOCATION: 'Farm 3927',
GAPINFO: {},
PLANTINGDATE: '2020-11-02T18:30:00.000Z',
PRODUCEQUANTITES: [
{
name: 'Priya',
qty: 200
}
],
SELECTED_UNIT: {
NAME: 'kg'
}
},
chaincodeID: 'producechaincode',
docType: 'Produce',
PRID: 'PRFAINKABR0007',
PRODUCE: 'Sweetcorn',
STATUS: 'Approved',
timestamp: '2020-12-06T13:03:08.857Z'
}
我想查询FARMERID为“FAINKABR0001”的所有数据(产品)。
我浏览了所有的示例,但似乎我只能查询哈希键、排序键和使用GSI。
我们可以使用AWS的Javascript SDK进行查询吗
提前感谢DynamoDB中的
查询
操作根据主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或辅助索引(GSI
)
现在,对于您的问题,您有两个选择:选项1
- 将
作为您的GSIFARMERID
- 使用
方法并过滤结果Scan
根据评论,一种方法可能是
var数据=
[
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0001”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
},
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0002”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
},
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0001”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
}
];
函数filterResponse(数据,id){
对于(变量i=0;i
DynamoDB中的查询
操作根据主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或辅助索引(GSI
)
现在,对于您的问题,您有两个选择:选项1
- 将
作为您的GSIFARMERID
- 使用
方法并过滤结果Scan
根据评论,一种方法可能是
var数据=
[
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0001”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
},
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0002”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
},
{
区块编号:“20”,
业务数据:{
基本单位:千克,
FARMERID:“FAINKABR0001”,
农场位置:“3927农场”,
加平福:{},
种植日期:“2020-11-02T18:30:00.000Z”,
产品数量:[
{
姓名:“Priya”,
数量:200
}
],
所选单位:{
名称:“kg”
}
},
chaincodeID:“producechaincode”,
docType:'product',
PRID:'PRFAINKABR0007',
生产‘甜玉米’,
状态:“已批准”,
时间戳:“2020-12-06T13:03:08.857Z”
}
];
函数filterResponse(数据,id){
对于(变量i=0;i
谢谢@Atul Kumar的帮助我还添加了我的全部代码我的未来可能会有人面临同样的问题
这里的filtereexpression为filtereexpression:“BusinessData.FARMERID=:farmeridvalue”
这里我们需要给FilterExpression值指定我们要查询的属性,即BusinessData.FARMERID
,并给一个名称作为我给的farmeridvalue
,现在您已经将ExpressionAttributeValue
设置为我的搜索值作为FAINKABR0001
请参见下面的整个扫描代码
var params = {
TableName: "Your_tableName",
FilterExpression: "BusinessData.FARMERID = :farmeridvalue",
ExpressionAttributeValues: {
":farmeridvalue" :"FAINKABR0001"
}
};
docClient.scan(params, onScan);
function onScan(err, data) {
if (err) {
console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
} else {
// print all the movies
console.log("Scan succeeded.", data);
data.Items.forEach(function(Block) {
console.log( "result",
Block.docType + ": ",
Block.timestamp, "- rating:", Block.BusinessData.FARMERID);
});
// continue scanning if we have more movies, because
// scan can retrieve a maximum of 1MB of data
if (typeof data.LastEvaluatedKey != "undefined") {
console.log("Scanning for more...");
params.ExclusiveStartKey = data.LastEvaluatedKey;
docClient.scan(params, onScan);
}
}
}
谢谢@Atul Kumar的帮助,我也添加了我的全部代码,我的未来可能会有人面临同样的问题 这里的filtereexpression为
filtereexpression:“BusinessData.FARMERID=:farmeridvalue”
这里是w