亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以使用 javascript SDK 從亞馬遜 Dynamodb 查詢 JSON 數據

是否可以使用 javascript SDK 從亞馬遜 Dynamodb 查詢 JSON 數據

互換的青春 2023-10-20 15:15:39
我需要有關 amazon Dynamo 的幫助。我正在尋找 dynamodb 中的特殊查詢我的 JSON 如下所示{  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查詢它嗎?
查看完整描述

2 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

DynamoDB 中的操作Query根據主鍵值查找項目。GSI您可以查詢具有復合主鍵(分區鍵和排序鍵)的任何表或二級索引 ( )。

現在對于你的問題,你有兩個選擇:
選項 1

  • 設為FARMERID您的 GSI

選項2

  • 使用Scan方法并過濾結果

現在您需要根據您的需求進行成本評估。每種方法都有其自身的優點和缺點。


根據評論,一種方法可能是

var data =?

[

? ? {

? 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'

},

{

? blocknumber: '20',

? BusinessData: {

? ? BASE_UNIT: 'kg',

? ? FARMERID: 'FAINKABR0002',

? ? 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'

},


{

? 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'

}

];


function filterResponse(data, id) {

? for(var i = 0; i < data.length; i++) {

? ? if(data[i].BusinessData.FARMERID === id ) {

? ? ? console.log(data[i]);

? ? }

? }

}


filterResponse(data, "FAINKABR0001");


查看完整回答
反對 回復 2023-10-20
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我還添加了我的整個代碼,將來有人會遇到同樣的問題,這里 FilterExpression 為 FilterExpression: "BusinessData.FARMERID = :farmeridvalue"


在這里,我們需要給 FilterExpression 值提供我們想要查詢的屬性,即BusinessData.FARMERID并給出一個名稱,正如我farmeridvalue現在給出的那樣,您已將ExpressionAttributeValues我設置為搜索值,如下所示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);

        }

    }

}


查看完整回答
反對 回復 2023-10-20
  • 2 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號