是DynamoDB for Query中的复合主键

时间:2016-02-07 13:04:39

标签: primary-key amazon-dynamodb

根据此链接:

Supported Operations on DynamoDB

"您只能查询具有复合主键(分区键和排序键)的表。"

但这似乎并不正确。我在DynamoDB中有一个名为' users'它的主键只包含一个属性'用户名'。

enter image description here

我只需使用' KeyConditionExpression'就可以在NodeJS中查询此表。在属性'用户名'。请参阅以下内容:

var getUserByUsername = function (username, callback) {
var dynamodbDoc = new AWS.DynamoDB.DocumentClient();

var params = {
    TableName: "users",
    KeyConditionExpression: "username = :username",
    ExpressionAttributeValues: {
        ":username": username
    }
};

dynamodbDoc.query(params, function (err, data) {
    if (err) {
        console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
        callback(err, null);
    } else {
        console.log("DynamoDB Query succeeded.");
        callback(null, data);
    }
});

}

这段代码很好用。所以我想知道文档是不正确还是我遗漏了什么?

1 个答案:

答案 0 :(得分:3)

文档是正确的。

"分区键和排序键 - 由两个属性组成的复合主键。第一个属性是分区键,第二个属性是排序键。 DynamoDB使用分区键值作为内部哈希函数的输入"

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html

如果表没有排序键(范围属性),则复合键仅从散列键构建。其中一个结果是项目不会按照您的喜好排序(项目按排序键排序)