使用golang和mgo,如何在MongoDB中搜索一系列值?

使用golang和mgo,如何在MongoDB中搜索一系列值?,mongodb,go,mongodb-query,mgo,Mongodb,Go,Mongodb Query,Mgo,我在上完成了这个示例,但我正在努力找到一种查询一系列值的方法。行: searchResults,searchErr=SearchReading(bson.M{“k”:key,t:{$gte:start,$lte:end},limit) 失败原因: line67:语法错误:意外$ line67:复合文字中缺少类型 我遗漏了一些不必要的代码 type Reading struct { K string "k" T int64 "t" V float64 "v" } f

我在上完成了这个示例,但我正在努力找到一种查询一系列值的方法。行:
searchResults,searchErr=SearchReading(bson.M{“k”:key,t:{$gte:start,$lte:end},limit)

失败原因:
line67:语法错误:意外$

line67:复合文字中缺少类型

我遗漏了一些不必要的代码

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
}
类型读取结构{
K字符串“K”
T int64“T”
V浮动64“V”
}
func SearchReading(q接口{},限制int)(searchResults[]读取,searchErr字符串){
searchErr=“”
searchResults=[]正在读取{}
查询:=func(c*mgo.Collection)错误{
fn:=c.Find(q).Limit(Limit).All(&searchResults)
如果限制<0{
fn=c.Find(q).All(&searchResults)
}
返回fn
}
搜索:=func()错误{
使用集合返回(“读取”,查询)
}
错误:=搜索()
如果错误!=零{
searchErr=“数据库错误”
}
返回
}
func GetReadingsForKey(键字符串,起始int64,结束int64,限制int)(searchResults[]读取,SearchError字符串){
searchResults,searchErr=SearchReading(bson.M{“k”:key,“t”:{$gte:start,$lte:end}},limit)
返回
}
行:

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
被解释为变量,在开头不能有一个
$
,这就是为什么编译器会抱怨这个意外字符。谢谢,所以我不允许在发布问题的两天内接受我自己的答案,但会尽快接受