java - 带 GSI 的 dynamodb 过滤器

标签 java c# amazon-web-services amazon-dynamodb

所以我有一个员工的发电机表,其中包含以下字段

employeeid(主索引/哈希键)
某某 (GSI)
名字 (GSI)
姓氏
电子邮件
多布
秘钥
地址
电话
电子邮件 (GSI)

除了上面的字段之外,我无法在任何其他字段上创建 gsi。

我需要做的是寻找具有相同特征的员工
名字,
姓氏,
出生日期
和 secret key ,

如果我没有,那么我需要插入一名新员工(如果我需要)执行某项操作。

在 dynamodb 中是否有一种使用 C# 的方法可以在这 4 个字段上进行搜索?

我的名字有一个 gsi,我不想使用允许我使用过滤器的扫描,有没有办法使用我拥有的名字 gsi 进行查询或过滤,而无需对表。

如有任何建议,我们将不胜感激。

感谢您的阅读。

更新

这是我在 C# 中尝试过的

var request = new QueryRequest()
{
   TableName = "employee",
   IndexName = "firstName-employeeId-index",
   Select = Select.ALL_ATTRIBUTES,
   ScanIndexForward = false
};
String keyConditionExpression;
Dictionary<string, AttributeValue> expressionAttributeValues = new Dictionary<string, AttributeValue>();
keyConditionExpression = "firstName = :firstName and lastName = :lastName ";
expressionAttributeValues.Add(":firstName", new AttributeValue { S = firstName });
expressionAttributeValues.Add(":lastName", new AttributeValue { S = lastName });

request.KeyConditionExpression = keyConditionExpression;
request.ExpressionAttributeValues = expressionAttributeValues;
var result = await Client.QueryAsync(request);

当我运行上面的代码时,它查找我的哈希键,出现错误。

最佳答案

我发布的问题代码缺少一行,我发现,下面是我正在寻找的内容。

var request = new QueryRequest()
{
   TableName = "employee",
   IndexName = "firstName-employeeId-index",
   Select = Select.ALL_ATTRIBUTES,
   ScanIndexForward = false
};
String keyConditionExpression;
Dictionary<string, AttributeValue> expressionAttributeValues = new Dictionary<string, AttributeValue>();
keyConditionExpression = "firstname = :firstname";
expressionAttributeValues.Add(":firstname", new AttributeValue { S = firstname });
expressionAttributeValues.Add(":lastName", new AttributeValue { S = lastname });

request.KeyConditionExpression = keyConditionExpression;
request.FilterExpression = "lastname = :lastname";
request.ExpressionAttributeValues = expressionAttributeValues;

var result = await Query<EmployeeDataModel>(Client, request);

关于java - 带 GSI 的 dynamodb 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37606992/

相关文章:

java - 如何开发在首次启动时出现的演练对话框?

Java 扫描仪问题,Notecard 类

c# - 将 Request.QueryString 转换为整数

java - 在 Spring 4 中用什么替换 MethodInvokingTimerTaskFactoryBean?

java - Apache Tiles 类似框架但没有 xml 配置

c# - 使用当前登录的 Windows 用户连接到 tfs

c# - json.net 与 DataContractJsonSerializer

amazon-web-services - AWS + Cloudflare | https 被重定向到 http

amazon-web-services - AWS ARN 的最大长度是多少?

ios - AWS 认知错误 : Authentication delegate not set