【发布时间】:2015-10-17 09:50:20
【问题描述】:
如何使用 'where' 条件从 dynamoDB 获取项目?
例如,
select 'names' from Employee where dept="billing"
(我想从 Employee 表中获取部门为“计费”的所有名称)
如何在 Java 代码中为此编写查询?非常感谢用示例代码解释。谢谢。
【问题讨论】:
标签: java amazon-web-services amazon-dynamodb
如何使用 'where' 条件从 dynamoDB 获取项目?
例如,
select 'names' from Employee where dept="billing"
(我想从 Employee 表中获取部门为“计费”的所有名称)
如何在 Java 代码中为此编写查询?非常感谢用示例代码解释。谢谢。
【问题讨论】:
标签: java amazon-web-services amazon-dynamodb
选择查询可能是这样的:
SELECT `names` FROM `Employee` WHERE `dept` LIKE 'billing'
一些java的东西:
try {
String url = "jdbc:msql://***.***.***.***:****/Demo";
Connection conn = DriverManager.getConnection(url, "", "");
Statement stmt = conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT `names` FROM `Employee` WHERE `dept` LIKE 'billing'");
while (rs.next()) {
String name = rs.getString("names");
System.out.println(name);
}
conn.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
【讨论】:
您可以使用主键(散列键)或复合键(散列+范围键)搜索 Dynamo DB
如果您尝试搜索某个项目的任何属性,则必须对数据库进行完整的Scan,这是非常低效的。
因此,请尝试以一种您不要最终使用Scans 的方式设计您的数据库,并鼓励根据 Dynamo 设计的索引进行搜索。
对于原始问题:您可以使用ProjectionExpression 进行搜索。
供进一步参考 - http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Scan
【讨论】: