2012-10-31 10 views
5

Ho analizzato l'esempio sullo mgo homepage, ma non riesco a trovare un modo per interrogare un intervallo di valori. La linea:
searchResults, searchErr = SearchReading(bson.M{"k": key, "t": { $gte: start, $lte: end } }, limit)
fallisce con:
line67: syntax error: unexpected $
line67: missing type in composite literalUsando golang e mgo, come posso cercare un intervallo di valori in MongoDB?

ho lasciato fuori i bit non essenziali del codice ...

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 
} 

risposta

12

La linea:

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

deve essere modificato in:

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

Si prega di accettare la propria risposta per contrassegnare questa domanda risposta. Si potrebbe anche aggiungere una breve spiegazione, ad esempio, che '$ gte' è interpretato come variabile, che non può avere un' $ 'all'inizio, motivo per cui il compilatore si lamenta del carattere inaspettato. – nemo

+0

Grazie, SO non mi consente di accettare la mia risposta entro due giorni dalla pubblicazione della domanda, ma lo farò il prima possibile –

+0

Penso che ora sia il momento. – fabrizioM

Problemi correlati