根据Astyanax的示例页面:
https://github.com/Netflix/astyanax/wiki/Cql-and-cql3
当您运行COUNT
查询时,result
会返回“数字”,因此您可以通过以下方式查询:
try {
OperationResult<CqlResult<String, String>> result
= keyspace.prepareQuery(CF_STANDARD1)
.withCql("SELECT count(*) FROM Standard1 where KEY='A';")
.execute();
System.out.println("CQL Count: " + result.getResult().getNumber());
} catch (ConnectionException e) {
}
它应该给你COUNT
结果,但我用cql3查询我的表并且它没有给我一个“数字”,而是“行”,只有一行而且只有一列。 / p>
方法hasNumber
提供False
,方法hasRows
提供True
,现在,如何获取COUNT
查询的结果?< / p>
答案 0 :(得分:3)
你应该使用
System.out.println("CQL Count: " + result.getResult().getRows().getRowByIndex(0).getColumns().getColumnByName("count").getLongValue());
答案 1 :(得分:1)
根据abhi的回答,但增加了1M的限制以绕过默认限制10K。
private long getCount(ColumnFamily<String, String> columnFamily) throws ConnectionException {
OperationResult<CqlResult<String, String>> result = context.getClient().prepareQuery(columnFamily)
.withCql("SELECT count(*) FROM Standard1 limit 1000000;")
.execute();
return result.getResult().getRows().getRowByIndex(0).getColumns().getColumnByName("count").getLongValue();
}