使用golang和mgo,我如何在MongoDB中搜索一系列值? [英] Using golang and mgo, how do I search for a range of values in MongoDB?

查看:181
本文介绍了使用golang和mgo,我如何在MongoDB中搜索一系列值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过 mgo主页上的示例工作,但我正在努力寻找一种方法来查询值的范围。该行:

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


失败:

line67:语法错误:意外的$

line67:复合字面值中缺少的类型

I worked through the example on the mgo homepage, but I'm struggling to find a way to query a range of values. The line:
searchResults, searchErr = SearchReading(bson.M{"k": key, "t": { $gte: start, $lte: end } }, limit)
fails with:
line67: syntax error: unexpected $
line67: missing type in composite literal

我忽略了非必要的代码位...

I left out the non-essential bits of code...

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
}


推荐答案

行:

The line:

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

需要更改为:

needs to change to:

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

这篇关于使用golang和mgo,我如何在MongoDB中搜索一系列值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆