在golang中无法通过ObjectId获取mongodb记录
发布时间:2020-12-16 09:29:14 所属栏目:大数据 来源:网络整理
导读:我试图通过使用以下代码获取ObjectId的 mongodb记录,但是err.Error()一直找不到它 以下是我的mongo收集样本 { "_id" : ObjectId("5a2a75f777e864d018131a59"),"callDate" : "22/12/2017","time" : "16.25","callType" : "a","position" : "aaa","description
我试图通过使用以下代码获取ObjectId的
mongodb记录,但是err.Error()一直找不到它
以下是我的mongo收集样本 { "_id" : ObjectId("5a2a75f777e864d018131a59"),"callDate" : "22/12/2017","time" : "16.25","callType" : "a","position" : "aaa","description" : "aaaaaa","qty" : 2,"estimatedDuration" : 2.3,"estimatedOvertime" : 3.44,"rate" : 4,"laborExtension" : 3 } { "_id" : ObjectId("5a2a75f877e864d018131a5b"),"laborExtension" : 3 } { "_id" : ObjectId("5a2a75fa77e864d018131a5d"),"laborExtension" : 3 } 以下是我的模特 type RhinoJobs struct { ID bson.ObjectId `db:"id" json:"id" bson:"_id"` CallDate string `db:"call_date" json:"callDate" bson:"callDate"` Time string `db:"time" json:"time" bson:"time"` CallType string `db:"call_type" json:"callType" bson:"callType"` Position string `db:"position" json:"position" bson:"position"` Description string `db:"description" json:"description" bson:"description"` Qty int `db:"qty" json:"qty" bson:"qty"` EstimatedDuration float64 `db:"estimated_duration" json:"estimatedDuration" bson:"estimatedDuration"` EstimatedOvertime float64 `db:"estimated_overtime" json:"estimatedOvertime" bson:"estimatedOvertime"` Rate float64 `db:"rate" json:"rate" bson:"rate"` LaborExtension float64 `db:"labor_extension" json:"laborExtension" bson:"laborExtension"` } 我想通过对象id搜索这些记录 "gopkg.in/mgo.v2" func GetMongoSession() (*mgo.Session,error) { if mgoSession == nil { var err error mgoSession,err = mgo.Dial(mongoConnectionUrl) if err != nil { return nil,err } } return mgoSession.Clone(),nil } func GetJobByID(objID string) (models.RhinoJobs,error) { var job models.RhinoJobs s,err := commons.GetMongoSession() if err != nil { errMsg := "error occurred while creating mongoDB connection stack:" + err.Error() print(err.Error()) return job,errors.New(errMsg) } defer s.Close() err = s.DB("rhino").C("jobs").FindId(bson.ObjectIdHex("5a2a75f777e864d018131a59")).One(&job) if err != nil { print(err.Error()) errMsg := "error occurred while getting data :" + err.Error() return job,errors.New(errMsg) } return job,nil } 但是当我尝试通过以下代码获取所有收集记录时,它工作正常 err := s.DB("rhino").C("jobs").Find(nil).All(&jobs) 我也检查了SO Q& A但是没有用 Querying mongodb from golang using the _id stored in an array How to find by id in golang and mongodb Cannot retrieve “_id” value using mgo with golang 解决方法
我有完全相同的问题,我的问题是我最近切换到新的mgo fork(正在积极开发),我混合了依赖项.
我基本上使用了来自globalsign TOGETHER的mgo和来自gopkg.in的旧bson.请检查您的依赖项! "github.com/globalsign/mgo" "gopkg.in/mgo.v2/bson" 这是错误的!! 相反它应该是: "github.com/globalsign/mgo" "github.com/globalsign/mgo/bson" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |