Tag: amazon dynamodb

使用全局二级索引筛选dynamoDB查询

我正在使用全局二级索引查询我的表,并希望能够过滤基于其他属性的结果(SQL等效将是一个WHERE子句))。 扫描允许我这样做,但有可能与查询? 我还可以采取哪些其他方法? var params = { "IndexName": "City-index", "KeyConditions": { "City": { "AttributeValueList": [{ "S": city }], "ComparisonOperator": "EQ" } }, "Limit": "100", "TableName": "properties" } dynamoDB.query(params, function(err, data) { if (err) { console.log(err); } else { console.log(data); } }); 任何其他的想法,我可以如何devise一个TABLE来实现: Hash Key: propertyID (unique) Range Key: createdAt (unique Global Secondary Indexes: City Global […]

如何使用DynamoDB批量删除?

我收到“所提供的关键元素与模式不匹配”​​的错误。 uuid是我的主分区键。 我也有version的主要sorting键。 我想我可以使用batchWrite ( 文档 )来删除具有相同的uuid所有项目。 我的ES6代码如下: delete(uuid) { const promise = new Promise(); const params = { RequestItems: { [this.TABLE]: [ { DeleteRequest: { Key: { uuid: uuid } } } ] } }; // this._client references the DocumentClient this._client.batchWrite(params, function(err, data) { if (err) { // this gets hit with error console.log(err); […]

DynamoDB createTable如果不存在

您需要在DynamoDB上创build一个表。 问题是,如果它存在createTable响应是一个错误。 我如何避免这一点。 因为我发生错误时会发出通知,但在这种情况下,我不想。 我不想比较错误代码,因为ResourceInUseException太模糊了。 另外,我不认为先发送一个描述表请求是一个真正的解决scheme。 有没有办法createIfNotExists ?

如何使用AWS lambda和Dynamo db创build地理空间模块

首先让我感谢您花时间阅读我的问题。 我的计划是在dynamodb中的我的人员logging上添加纬度和经度logging,然后使用地理库(最好用nodejs编写)计算给定半径内的附近人员。 所以这个计划是,例如,只能从这个50英里半径返回的人。 到目前为止,我所尝试过的唯一的地理数据库允许我将lat和long传递给它,并确认它是否在给定的半径内。 这个问题是我必须循环我的整个dynamodb表来获得结果。 是否有一种相反的function,我将一个latlong点和半径传递给geo库,然后geo库传递一些lat和long边界,以便我可以很容易地查询它到dynamodb(例如(lat < latboundary1 AND lat>:latboundary 2)AND(long <:longboundary1 AND long>:longboundary 2))

为什么使用Limit和FilterExpression进行DynamoDB扫描不会返回符合filter要求的项目?

我需要在DynamoDB上进行限制和条件扫描。 文档说: 在响应中,DynamoDB会返回Limit值范围内的所有匹配结果。 例如,如果发出限制值为6且没有filterexpression式的查询或扫描请求,DynamoDB会返回表中与请求中指定的关键条件相匹配的前六个项目(或者仅返回前六个项目在没有filter的情况下扫描)。 如果您还提供FilterExpression值,则DynamoDB将返回前六个中也与filter要求匹配的项目(返回的结果数小于或等于6)。 代码(NODEJS): var params = { ExpressionAttributeNames: {"#user": "User"}, ExpressionAttributeValues: {":user": parseInt(user.id)}, FilterExpression: "#user = :user and attribute_not_exists(Removed)", Limit: 2, TableName: "XXXX" }; DynamoDB.scan(params, function(err, data) { if (err) { dataToSend.message = "Unable to query. Error: " + err.message; } else if (data.Items.length == 0) { dataToSend.message = "No results were […]

如何在dynamoDB中返回插入的项目

我使用nodeJS sdk把项目放到dynamoDB,项目是: { "eventId": date + '-' + eventName + '-' + eventPurpose, "eventName": eventName, "eventPurpose": eventPurpose, "eventDates": eventDates, "attendees": attendees } 将这个项目放在dynamoDB中的代码: const params = { TableName: "event", Item: { "eventId": date + '-' + eventName + '-' + eventPurpose, "eventName": eventName, "eventPurpose": eventPurpose, "eventDates": eventDates, "attendees": attendees }, ReturnValues: "ALL_OLD" }; dynamo.put(params, (err, […]

DynamoDB节stream

我有一个5读和5写能力dynamo表。 在这张表中,我有两个logging。 然后,我决定通过一次推送大量的写入(一次突发中的大约4000条logging)来查看我会得到什么样的错误响应。 蓝色“消耗”线直接射过红色“容量”线,但是我没有得到任何types的错误信息。 指标显示节stream发生,但我仍然发生读取,如果我超过两个容量水平,我的写道仍然发生。 我已经花了超过30分钟的时间推动阅读和写入远高于容量,没有任何错误。 我不确定这是因为我在节点js中使用官方javascript SDK,可能透明地处理调节并重试受限制的查询? 我希望有人能给我一些指导。 谢谢

如何更新string集(SS)types的Dynamodb中的项目?

我创build了一个String Settypes的属性。 当我创build创build项目和分配typesSS的属性一切正常。 但是,当我尝试更新此属性时,数据types更改为列表(“L”)。 我试试这个: qw = new AWS.DynamoDB.DocumentClient(); var params = { TableName : "myTable", Key: { "id": somekey }, UpdateExpression: "set ssvar= :arrp", ExpressionAttributeValues: { ":arrp": [ "test", "test2" ] } }; qw.update (etc.) 这导致在dynamodb中的数据types的改变,而不是一个string集我得到一个列表: "ssvar": { "L": [ { "S": "test" }, { "S": "test2" } ] } 我已经尝试了下面的所有types的解决scheme,但总是我的数据types被改变。 ExpressionAttributeValues: { ":arrp": […]

在使用节点JS的DynamoDB查询中recursion提取所有项目

这可能是一个比DynamoDB特定问题更多的JS / Async问题 – 我想用Amazon的DynamoDB中的散列键获取表中的所有项目。 表中也有Range键。 我正在使用一个NodeJS库,它是AWS DynamoDB REST API的包装器。 – 节点 – DynamoDB DynamoDB只会为每个查询返回1 MB的结果。 要提取结果提醒,它包括lastEvaluatedKey 。 我们可以在另一个查询中包含这个来获取另一个1 MB值的结果,等等… 我在编写recursionasynchronous函数时遇到了困难,它应该按顺序打到服务,直到我可以得到所有结果为止。 (表格永远不会超过10 MB用于我的用例,没有失控查询的机会) 一些伪代码的插图: ddb.query('products', primarykey, {}, function(err,result){ //check err if(result && result.lastEvaluatedKey){ //run the query again var tempSet = result.items; //temporarily store result.items so we can continue and fetch remaining items. } else{ var […]

来自Node-aws的Dynamo Local:所有操作都失败“无法对不存在的表执行操作”

我有一个本地dynamo-db运行。 我已经使用JavaScript控制台设置了我的表格,并从那里列出了OK。 我也可以把项目从JavaScript控制台放到我的表中: var params = { TableName:"environmentId", Item: { environmentId: {"S":"a4fe1736-98cf-4560-bcf4-cc927730dd1b"} }}; dynamodb.putItem(params, function(err, data) { console.log("put : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data)); }); 打印出来put : err was null and data is {} ,我假设是“成功”,因为 params = { "Key":{"environmentId":{"S":"a4fe1736-98cf-45e0-bcf4-cc927730dd1b"}},"TableName":"environmentId"} dynamodb.getItem(params, function(err, data) { console.log("get : err was […]