为了账号安全,请及时绑定邮箱和手机立即绑定

在mongodb中按日期查询

在mongodb中按日期查询

Go
ibeautiful 2021-09-27 20:44:06
我可以使用 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)


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信