如何在java dynamodb查询中从AttributeValue Map获取多个值?

我想从 dynamo db 表中获取所有项目。我在 java 中编写了一个查询,如下所示,它可以工作。但问题是它不会将所有列添加到 AttributeValue Map。它只有第一列(键)。所以我在这里做的是在循环中按键搜索每个项目。因此,如果您的表在我搜索循环中的每个项目时具有数百万个数据,则效率不高。我能做些什么来避免这种情况?注意:“名称”是表中的第一列。(首要的关键)


我试图得到'count',就像我喜欢'name'一样,但它没有为'count'返回任何东西,而是返回null。


    Table table = dynamoDb.getTable(DYNAMODB_TABLE_NAME);


    ScanRequest scanRequest = new ScanRequest(DYNAMODB_TABLE_NAME);

    ArrayList<DeviceResponse>deviceResponses=new ArrayList<>();

    Map<String, AttributeValue> exclusiveStartKey = null;

    do {

        final ScanResult scanResult = client.scan(scanRequest);

        List<Map<String, AttributeValue>> items = scanResult.getItems();


        for (int i = 0; i < items.size(); i++) {

            Map<String, AttributeValue> map = items.get(i);


            AttributeValue value = map.get("name");

            String name = value.getS();


            Item item = table.getItem("name", name); //Searching item

            int count = item.getInt("count"); //getting count from item


            DeviceResponse deviceResponse = new DeviceResponse();

            deviceResponse.setName(name);

            deviceResponse.setCount(count);


            deviceResponses.add(deviceResponse);

        }


        exclusiveStartKey = scanResult.getLastEvaluatedKey();


        // Reusing same request object, just setting the start key

        scanRequest.setExclusiveStartKey(exclusiveStartKey);

    } while(exclusiveStartKey != null);


    return deviceResponses;


吃鸡游戏
浏览 153回答 1
1回答

茅侃侃

我试图得到“计数”,就像我喜欢“名字”一样不,你没有。你得到的这段代码name:AttributeValue value = map.get("name");String name = value.getS();不等同于您尝试获取的此代码count:Item item = table.getItem("name", name); //Searching itemint count = item.getInt("count"); //getting count from item您正在获取该name字段,然后出于某种原因对数据库执行另一个查询。所有属性都在Map<String, AttributeValue> map对象中。如果您想以与命名属性count相同的方式命名属性name,则代码如下:AttributeValue value = map.get("count");int count = value.getN();或者只是像这样简化它:int count = map.get("count").getN();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java