mongodb - 在集合中没有索引的情况下使用 golang mongo 时无法通过 tier.Next(&result) 获取值,如果索引已设置则获取值

标签 mongodb go

我在使用 go mongo 操作时遇到问题。

我的代码是这样的:

iter = coll.Find(filter).Sort("-timestamp").Skip(12510).Limit(10).Iter()
for iter.Next(&result){
    ....
}

我收集了 12520 个文档,但如果我没有在 MongoDB 中设置 timestamp 的索引,则无法使用 iter.Next() 获取值。 如果我设置“timestamp”的索引,这似乎可行,并且我可以获得结果的值(value)。

那么,发生了什么事?

最佳答案

你需要先解码你的数据然后迭代它

这里的 item 是你从 MongoDB 获得的数据结构

if err := iter.Decode(&item); err != nil {
return status.Errorf(
codes.Aborted,
fmt.Sprintln(errormsg.ERR_MSG_DATA_CANT_DECODE, err))
}

然后进行迭代就可以了!!!

关于mongodb - 在集合中没有索引的情况下使用 golang mongo 时无法通过 tier.Next(&result) 获取值,如果索引已设置则获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684539/

相关文章:

go - 如何在处理结果时正确关闭 Goroutines 中的共享 channel

mongodb - 聚合父文档中的嵌套文档

node.js - 如果这个nodejs Rest api 正常并且它的 mongoose 结构和 mongodb 数据正常的话,为什么我会从 mongoDB 得到空值?

go - 在 helm 模板中将千兆字节转换为字节

go - Go[lang] 二进制文件上的 SetGID/SetUID 安全吗?

google-app-engine - Google App Engine 在运行时找不到文件

当文档数达到 100, 000 左右时,mongodb 变慢了。有什么性能优化吗?

node.js - 具有多个字段更新运算符的 Mongoose findOneAndUpdate

c# - 如何使用具有 native JSON 标准语法的 MongoDB C# 驱动程序发出查找命令?

azure - 使用 REST API 在 Go 中向 Azure 进行身份验证