根据此链接:
Supported Operations on DynamoDB
"您只能查询具有复合主键(分区键和排序键)的表。"
但这似乎并不正确。我在DynamoDB中有一个名为' users'它的主键只包含一个属性'用户名'。
我只需使用' 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);
}
});
}
这段代码很好用。所以我想知道文档是不正确还是我遗漏了什么?
答案 0 :(得分:3)
文档是正确的。
"分区键和排序键 - 由两个属性组成的复合主键。第一个属性是分区键,第二个属性是排序键。 DynamoDB使用分区键值作为内部哈希函数的输入"
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html
如果表没有排序键(范围属性),则复合键仅从散列键构建。其中一个结果是项目不会按照您的喜好排序(项目按排序键排序)