【问题标题】:Using golang and mgo, how do I search for a range of values in MongoDB?使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?
【发布时间】:2012-10-20 22:25:16
【问题描述】:

我完成了mgo homepage 上的示例,但我正在努力寻找一种方法来查询一系列值。热线:
searchResults, searchErr = SearchReading(bson.M{"k": key, "t": { $gte: start, $lte: end } }, limit)
失败:
line67: syntax error: unexpected $
line67: missing type in composite literal

我省略了一些非必要的代码...

type Reading struct {
    K string  "k"
    T int64   "t"
    V float64 "v"
}

func SearchReading(q interface{}, limit int) (searchResults []Reading, searchErr string) {
    searchErr = ""
    searchResults = []Reading{}
    query := func(c *mgo.Collection) error {
        fn := c.Find(q).Limit(limit).All(&searchResults)
        if limit < 0 {
            fn = c.Find(q).All(&searchResults)
        }
        return fn
    }
    search := func() error {
        return withCollection("reading", query)
    }
    err := search()
    if err != nil {
        searchErr = "Database Error"
    }
    return
}

func GetReadingsForKey(key string, start int64, end int64, limit int) (searchResults []Reading, searchErr string) {
    searchResults, searchErr = SearchReading(bson.M{"k": key, "t": { $gte: start, $lte: end } }, limit)
    return
}

【问题讨论】:

    标签: mongodb go mongodb-query mgo


    【解决方案1】:

    行:

    searchResults, searchErr = SearchReading(bson.M{"k": key, "t": { $gte: start, $lte: end } }, limit)
    

    需要改成:

    searchResults, searchErr = SearchReading(bson.M{"k": key, "t": bson.M{"$gte": start, "$lte": end}}, limit)
    

    【讨论】:

    • 请接受您自己的答案以标记此问题已回答。您还可以添加一个简短的解释,例如 $gte 被解释为变量,它的开头不能有 $,这就是编译器抱怨意外字符的原因。
    • 谢谢,所以不允许我在发布问题后两天内接受我自己的答案,但会尽快接受
    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2020-08-22
    • 2019-05-09
    • 2016-01-07
    相关资源
    最近更新 更多