英文:
Using golang and mgo, how do I search for a range of values in 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
}
英文:
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
}
答案1
得分: 12
searchResults, searchErr = SearchReading(bson.M{"k": key, "t": bson.M{"$gte": start, "$lte": end}}, limit)
英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论