एपीआई दस्तावेज़ों से डायनेमो डीबी स्कैन और क्वेरी ऑपरेशंस के लिए पेजिनेशन का समर्थन करता है। यहां का पकड़ ExclusiveStartIndex
को वर्तमान अनुरोध के LastEvaluatedIndex
के मूल्य के अगले सेट (तार्किक पृष्ठ) प्राप्त करने के लिए वर्तमान अनुरोध के सेट को सेट करना है।डायनेमो डीबीएम्पर जावा एडब्ल्यूएस एसडीके
मैं इसे लागू करने की कोशिश कर रहा हूं लेकिन मैं DynamoDBMapper
का उपयोग कर रहा हूं, जिसमें डेटा मॉडल के साथ तंग युग्मन जैसे बहुत अधिक फायदे हैं। तो अगर मैं ऊपर करना चाहता था, मुझे लगता है मैं नीचे की तरह कुछ करना होगा संभालने हूँ:
// Mapping of hashkey of the last item in previous query operation
Map<String, AttributeValue> lastHashKey = ..
DynamoDBQueryExpression expression = new DynamoDBQueryExpression();
...
expression.setExclusiveStartKey();
List<Table> nextPageResults = mapper.query(Table.class, expression);
मुझे आशा है कि मेरे ऊपर समझ DynamoDBMapper का उपयोग कर paginating पर सही है। दूसरा, मुझे कैसे पता चलेगा कि मैं परिणामों के अंत तक पहुंच गया हूं।
QueryResult result = dynamoDBClient.query((QueryRequest) request);
boolean isEndOfResults = StringUtils.isEmpty(result.getLastEvaluatedKey());
DynamoDBMapper उपयोग करने के लिए वापस आ रहा है, मैं कैसे पता कर सकते हैं अगर मैं इस मामले में परिणाम के अंत तक पहुंच: डॉक्स से अगर मैं निम्नलिखित एपीआई का उपयोग करें।
तो 'limit' है
यहाँ त्वरित कोड DynamoDBLocal का उपयोग कर दोनों तरीकों कि मैं 5 मदों की एक मेज के साथ भाग गया का एक उदाहरण उपयोग दिखा नमूना है 'क्वेरी' का उपयोग करते समय 2 कहने के लिए सेट करें, यह अभी भी सभी रिकॉर्ड्स लौट रहा है। ऐसा क्यों है? – user7
@ उपयोगकर्ता 7 यह केवल ऐसा प्रतीत होता है कि यह सभी रिकॉर्ड्स लौटा रहा है, वास्तव में अंतर्निहित कार्यान्वयन ('पेजिनेटेडक्विलिस्ट ') आपके लिए पेजिनेशन को संभालने में कामयाब रहा है। ['PaginatedQueryList'] के लिए प्रलेखन देखें (https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/PaginatedQueryList.html)। यह वैसे ही व्यवहार करता है जैसा मैंने उपरोक्त 'स्कैन' के बारे में पोस्ट किया था। असल में, यदि आप इसे फिर से चालू करते हैं, तो अंततः यह सभी तत्वों को प्राप्त करेगा क्योंकि यह स्वचालित रूप से पेजिनेशन कॉल कर रहा है। – mkobit
तो 'withLimit' इसके लिए आवेदन नहीं करता है? – user7