如何使用gocql获取查询返回的行数

如何使用gocql获取查询返回的行数,go,cassandra,gocql,Go,Cassandra,Gocql,我正在使用这里记录的gocql库:我正在尝试在golang中编写一个API调用,它将请求数据库中满足特定字段的所有元素,并返回返回的元素总数。我知道当我在Cassandra界面中时,我可以使用表1中的调用SELECT COUNT(*),其中其中table1是表名。我已经阅读了文档,我所能找到的就是限制返回条目数的limit函数 例如,假设我有一个Cassandra中发生在不同日期的事件的数据库表。我只想返回周二发生的事件的数量,我想使用gocql来实现这一点 目前我做的事情如下: cx := c

我正在使用这里记录的gocql库:我正在尝试在golang中编写一个API调用,它将请求数据库中满足特定字段的所有元素,并返回返回的元素总数。我知道当我在Cassandra界面中时,我可以使用表1中的调用
SELECT COUNT(*),其中其中table1是表名。我已经阅读了文档,我所能找到的就是限制返回条目数的limit函数

例如,假设我有一个Cassandra中发生在不同日期的事件的数据库表。我只想返回周二发生的事件的数量,我想使用gocql来实现这一点

目前我做的事情如下:

cx := cqlc.NewContext()
iter, err := cx.Select().
            From(db.EVENTLOG).
            Where(db.EVENTLOG.DAY.Eq(day).
            Limit(10000).       
            Fetch(cass)
data, err = db.BindEventlog(iter)
BindEventLog函数返回在“day”发生的事件数组,但我只需要事件数,而不是事件本身。有没有一种方法可以在不迭代这个数组的情况下得到这个结果,因为我无论如何都要扔掉这个数组,所以让数据库给我整个数据数组的速度会非常慢


我是一个初学者,所以如果你需要更多的信息,请询问,我试图使这尽可能具体。谢谢。

我能找到的最能帮助你的东西是

如果他们对行进行分页,则无法提供所需内容。如果他们这样做,这是在他们的Github上请求的合理功能。

您可以这样做

var count string
iter := session.Query(`SELECT count(*) FROM tablename`).Iter()
for iter.Scan(&count) {
    print(count)
}
您将在count变量中获得count。

我更喜欢:

var count int
tc.Session.Query(`SELECT COUNT(*) FROM ks.tbl WHERE something = ? ALLOW FILTERING`, "something_else").Iter().Scan(&count)
print(count)

因为计数将由数据库本身执行,而不是由应用程序执行。soul的答案也可以,但我更喜欢将计数保存为整数,并直接进行扫描,但不使用附加循环

我在API中看不到任何聚合支持=/谢谢,我也看到了NumRows的东西,但我不想重复。我已经联系过开发商了。我要求提供此功能。@user6407048您找到解决方案了吗?我目前正在调查此事。我希望获取查询的总行数。为什么计数的类型为string?