使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?
Posted
技术标签:
【中文标题】使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?【英文标题】:Using golang and mgo, how do I search for a range of values in 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
【问题讨论】:
【参考方案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
被解释为变量,它的开头不能有 $
,这就是编译器抱怨意外字符的原因。
谢谢,所以不允许我在发布问题后两天内接受我自己的答案,但会尽快接受以上是关于使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?的主要内容,如果未能解决你的问题,请参考以下文章
哪个库更高效“gopkg.in/mgo.v2”或“go.mongodb.org/mongo-driver/mongo”[关闭]