gpt4 book ai didi

mongodb - 在mongodb中按日期查询

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:57 27 4
gpt4 key购买 nike

我可以使用 golang 驱动程序 gopkg.in/mgo.vsgopkg.in/mgo.vs/bson 向 MongoDB 中插入一个条目,但是我拔不出来。在 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"`

然后它像这样保存(如 shell 中所示)

 "date" : NumberLong("1428762411980")

最佳答案

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)

关于mongodb - 在mongodb中按日期查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com