我可以使用 golang 驱动程序将一个条目插入到 MongoDB 中 gopkg.in/mgo.vs,gopkg.in/mgo.vs/bson但我无法将其拉出。在 mongo shell 中,如果我这样做db.Items.find({ date : 1428762411980 })它向我显示了我刚刚与 Go 代码一起插入的条目。但是,如果我尝试执行以下操作以在 Go 中获取它,它会告诉我找不到该记录 func fetch(w http.ResponseWriter, r *http.Request){ var result SomeStruct date := r.FormValue("date") err := Items.Find(bson.M{"date":date}).One(&result) ...code omitted... } func Items() *mgo.Collection { return DB().C("Items") } func DB() *mgo.Database { return DBSession().DB("mydb") }我注意到的一件事是,在 shell 中,日期存储为 NumberLong "date" : NumberLong("1428762411980")我想知道fetch在使用它查询数据库之前,我是否必须对我从函数中的表单接收到的日期值做一些事情?更新在将数据保存到数据库之前,它以这样的 json 字符串形式出现"date":1428762411980然后我将它解码成一个结构type blah struct{ Id bson.ObjectId `json:"id" bson:"_id"` Date int64 `json:"date" bson: "date"`它像这样保存(如外壳所示) "date" : NumberLong("1428762411980")
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
r.FormValue返回一个字符串,但您需要一个 int64。使用strconv.ParseInt。那么您的查询应该可以工作。
date, err := strconv.ParseInt(r.FormValue("date"), 10, 64)
// handle err
err = Items.Find(bson.M{"date":date}).One(&result)
- 1 回答
- 0 关注
- 288 浏览
添加回答
举报
0/150
提交
取消