mongodb 如何在新的go-mongo-driver中运行Find.().One()

3htmauhk  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(170)

目前,我们正在将mgo(globalsign)驱动程序迁移到mongo-driver
我需要一些替代方法来执行Find.().One()
我尝试了类似以下的方法,但没有帮助

login = model.LoginModel{}
    err = mongo.Collection.Find(bson.M{"name": MAXCOUNT}).Decode(&loginCount)

返回了以下错误,

error was: cannot transform type []interface {} to a BSON Document: WriteArray can only write a Array while positioned on a Element or Value but is positioned on a TopLevel

不确定新的Decode方法是否允许结构值?
我的结构如下所示

type LoginModel struct {
Username    string  `json:"username"`
Password    string  `json:"password"`

}

我是否也需要相应的bson值?
正在尝试在go-mongo-driver中运行Find.().One()

blmhpbnm

blmhpbnm1#

Collection.Find()设计用于查询多个元素。它返回一个mongo.Cursor,您可以使用它来迭代结果或使用Cursor.All()获取所有结果。
如果您需要单一结果,请改用Collection.FindOne()
例如:

ctx := context.Background() // Use / setup your context
c := ... // acquire mongo.Collection

var login model.LoginModel
err = c.FindOne(ctx, bson.M{"name": MAXCOUNT}).Decode(&login)
// check error

相关问题