为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
郎朗坤 2022-01-17 18:07:49
我正在使用此处记录的 gocql 库:https ://godoc.org/github.com/relops/cqlc/cqlc#Fetchable并尝试在 golang 中编写一个 API 调用,该调用将询问我的所有元素满足特定字段并返回返回元素总数的数据库。我知道当我在 Cassandra 界面中时,我可以使用SELECT COUNT(*) from table1 WHERE ...;table1 是表名的调用。我一直在阅读文档,我能找到的只是限制返回条目数量的限制函数。例如,假设我在 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 函数返回在“一天”发生的事件的数组,但同样,我只想要事件的数量,而不是事件本身。有没有办法在不遍历这个数组的情况下得到这个,因为无论如何我都会扔掉这个数组,所以让数据库给我整个数据数组真的很慢。我是这方面的初学者,所以如果您需要更多信息,请询问,我试图尽可能具体。谢谢。
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我能找到的最能帮助你的是Iter.NumRows

如果他们分页不会给你你正在寻找的行。如果他们这样做,这是在他们的 Github 上请求的合理功能。


查看完整回答
反对 回复 2022-01-17
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

你可以这样做


var count string

iter := session.Query(`SELECT count(*) FROM tablename`).Iter()

for iter.Scan(&count) {

    print(count)

}

您将获得计数变量中的计数。


查看完整回答
反对 回复 2022-01-17
?
慕神8447489

TA贡献1780条经验 获得超1个赞

我会选择 :


var count int

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

print(count)

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


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 333 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号