amazon-web-services - 查询 AWS DynamoDB 以返回半径内的经纬度结果

标签 amazon-web-services lambda amazon-dynamodb

我对 dynamodb 还很陌生,我用 lambda 和 api 网关设置了它。

我的 dynamodb 表看起来像这样。
enter image description here

现在我只是使用以下 lambda 函数查询表。

var AWS = require('aws-sdk');
var dynamoDB = new AWS.DynamoDB();

exports.handler = function(event, context) {

    /**
     * Debugging events
     * @type {[type]}
     */
    console.log("Request received:\n", JSON.stringify(event));
    console.log("Context received:\n", JSON.stringify(context));

    /**
     * Important this needs to be your Dynamo DB table name
     * @type {String}
     */
    var tableName = "Tracker";
    var datetime = new Date().getTime().toString();

    var queryData = {
        "TableName": tableName,
        "ConsistentRead": true,
        "KeyConditionExpression": "TrackIt = :val",
        "ExpressionAttributeValues": {":val": {"S": event.tid}}
    };
    dynamoDB.query(queryData, function(err, data) {
        if (err) {
            context.fail('ERROR: Dynamo failed: ' + err);
        }else{
            context.done(null,data.Items);
        }
    });

};

现在我想做的是根据某个半径内的纬度和经度值查询表,比如 3 英里,现在我知道如何用 mysql 做到这一点,但我真的很想知道在尝试用 dynamodb 做到这一点时从哪里开始.

我真的无法在网上找到任何有用的教程,有没有其他人做过或正在做这件事,可以为我指明正确的方向,我将不胜感激。

最佳答案

您可以使用以下表达式:

var queryData = {
        "TableName": tableName,
        "ConsistentRead": true,
        "KeyConditionExpression": "#latitude between :min and :max",
        "ExpressionAttributeNames": {
            "#latitude": "latitude",
        },
        "ExpressionAttributeValues": {
            ":min": [MIN_LATITUDE],
            ":max": [MAX_LATITUDE] 
        }
    };

更多信息:http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html

关于amazon-web-services - 查询 AWS DynamoDB 以返回半径内的经纬度结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296300/

相关文章:

python - 无法使用 python 从 AWS dynamodb 获取项目?

node.js - Node JS 嵌套函数被跳过

AWS EC2 实例上的 Node.js 环境变量

linux - 我应该将数据库和 CMS 文件放在单独的 EBS 或 S3 上吗?

lambda - Racket 中 lambda 函数的求值顺序

c++ - 在 C++ 中捕获 lambda 的全局引用是否会抑制别名优化?

python - 在另一个列表索引为 1 的列表中求和值?

java - 尝试使用 cloudfront 和 privateKey 访问存储在 S3(静态网络托管)中的私有(private)内容时出现 HTTP/1.1 403 Forbidden

amazon-web-services - 如何使用 Amazon ECS 从 Tutum 私有(private)注册表中提取 Docker 镜像?

amazon-web-services - 如何将 DynamoDb 迁移到 RDS (Aurora)