在DynamoDB复合主键的查询

问题描述 投票:2回答:1

按照此链接:

Supported Operations on DynamoDB

“你可以查询只能有一个复合主键(分区键和排序键)表”。

这似乎并不正确,虽然。我在DynamoDB表所谓的“用户”,这有一个主键仅由一个属性“用户名”的。

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);
    }
});

}

此代码的工作就好了。所以我想,如果文件不正确,还是我失去了一些东西?

primary-key amazon-dynamodb
1个回答
3
投票

该文档是正确的。

“分区键和排序键 - 一个复合主键,两个属性组成的第一属性是分区密钥,并且第二属性是所述排序键DynamoDB使用分区键的值作为输入到内部哈希函数”。

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

如果一个表没有排序键(range属性),那么该组合键只从哈希键建成。其中之一是,结果是,项目将不能进行排序,只要你喜欢(项都受到排序关键字排序)

© www.soinside.com 2019 - 2024. All rights reserved.