Как использовать golang и mgo для поиска диапазона значений в MongoDB?

Я проработал пример на главной странице mgo, но не могу найти способ запросить диапазон значений . Строка:
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
}

person Jaco Briers    schedule 31.10.2012    source источник


Ответы (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)
person Jaco Briers    schedule 31.10.2012
comment
Пожалуйста, примите свой собственный ответ, чтобы отметить этот вопрос как ответ. Вы также можете добавить короткое объяснение, например, что $gte интерпретируется как переменная, которая не может иметь $ в начале, поэтому компилятор жалуется на неожиданный символ. - person nemo; 31.10.2012
comment
Спасибо, SO не позволяет мне принять свой собственный ответ в течение двух дней после публикации вопроса, но сделает это как можно скорее. - person Jaco Briers; 01.11.2012