我在 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/