我在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
返回Results {0}
时,hello: world
返回ojit_code。谁能帮我这个?
谢谢!
最佳答案
您插入了一个字段值为“world”的hello文档。然后,您尝试将该文档解压缩为具有Foo和Bar字段的结构。这些都没有命名为Hello,也没有bson标记,因此没有地方可以将hello
字段编组为。如果您改为定义:
result := struct{
Hello string
}
它应根据需要解组。