在mongodb中按日期查询

我可以使用 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")


ibeautiful
浏览 289回答 1
1回答

偶然的你

r.FormValue返回一个字符串,但您需要一个 int64。使用strconv.ParseInt。那么您的查询应该可以工作。date, err := strconv.ParseInt(r.FormValue("date"), 10, 64)// handle errerr = Items.Find(bson.M{"date":date}).One(&result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go