我有连接到 mongodb 数据库的 Go 代码。问题是,当我尝试从集合中获取记录时,有一个类型的“_id”字段ObjectId,但在 mgo 驱动程序中ObjectId是
type ObjectID [12]byte
但是当我试图获得记录时 Go 说:
Reflect.Set:类型 []uint8 的值不可分配给类型 ObjectID
我尝试创建自己的[]uint8类型,但我不知道如何将[]uint8(“ObjectId”)转换为string或通过这些 id 查找某些记录。
// ObjectId type that mongodb wants to see
type ObjectID []uint8
// model
type Edge struct {
ID ObjectID `bson:"_id"`
Name string `bson:"name"`
StartVertex string `bson:"startVertex"`
EndVertex string `bson:"endVertex"`
}
// method for getting record by those id
session, err := mgo.Dial(config.DatabaseURL)
if err != nil {
fmt.Printf("Error is: %s", err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
//edges collection
e := session.DB(config.DatabaseName).C(config.EdgesCollection)
var result models.Edge
err = e.Find(bson.M{"_id": fmt.Sprintln("ObjectId('", id, "')")}).One(&result)
if err != nil {
fmt.Println("Error is: ", err)
}
繁花不似锦
相关分类