mongodb - 打印 MongoDB 集合数据 - GoLang,结果不符合预期

标签 mongodb go

我在 Docker 容器中有 mongoDB,我可以很好地连接和更新数据库,我可以在 Compass 中看到结果。然而,当涉及到收集和打印结果时,它们并没有像我期望的那样打印出来。

这是我的代码片段:

db := client.Database("maccaption")
collection := client.Database("maccaption").Collection("JobBacklog")
res, err := collection.InsertOne(context.Background(), bson.M{"hello": "world"})
if err != nil {
    log.Fatal(err)
}
result := struct {
    Foo string
    Bar string
}{}
filter := bson.D{{"hello", "world"}}
err = collection.FindOne(context.Background(), filter).Decode(&result)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Results", result)

我正在使用官方的 mongo-go-driver。并按照此处的示例 https://godoc.org/github.com/mongodb/mongo-go-driver/mongo

我知道数据库已连接,当我添加到数据库时我可以看到更新,然后当我运行代码时它会显示在 Compass 中,但是 collection.FindOne 返回 结果 {0},我希望它返回 hello: world

谁能帮我解决这个问题? 谢谢!

最佳答案

您插入了一个文档,其中的字段 hello 的值为“world”。然后,您将尝试将该文档解压缩到一个包含字段 Foo 和 Bar 的结构中。它们都没有命名为 Hello,也没有 bson 标签,因此它不应该将您的 hello 字段解码到任何地方。如果您改为定义:

result := struct{
    Hello string
}

它应该根据需要解码。

关于mongodb - 打印 MongoDB 集合数据 - GoLang,结果不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027394/

相关文章:

go - 如何使用 go get 导入特定版本的包?

go - 开始,一流的功能和最佳实践

node.js - 通过数组聚合对文档进行评分

当数据库为空时,mongodb 创建 80 多个文件,每个文件 2GB

python - 在 PyMongo 中使用正则表达式动态构建查询

json - 在 Go 中表示 JSON 策略

go - 如何使用带有密码的 SSH key 身份验证 `go get` 私有(private)仓库

go - 与 Channels 相比,sync.WaitGroup 的优势是什么?

javascript - MongoDB 脚本和 CSV 文件 : can I use require. js 加载 jquery.csv?

javascript - meteor :更新文档数组中的嵌套对象