Reputation: 126
Confused about how to translate the Javascript JSON commands back into something go will understand.
Ok so here's the query in the mongo shell::
db.customers.find({acct_balance:{$gt:100000}}, {firstName: 1, surname:1, acct_balance:1, _id:0})
Results ::
{ "firstName" : "Susann", "surname" : "Ulisch", "acct_balance" : 238897.45} { "firstName" : "Parker", "surname" : "Peet", "acct_balance" : 443314.13 }
Now I wanted to replicate that query in Go.
c := session.DB("mydb").C("customers")
query := []bson.M{}
query["firstName"] = append(bson.M{"firstName": "1"})
query["surname"] = append(bson.M{"surname": "1"})
query["$gte"] = []bson.M{}
query["$gte"] = append(query["$gte"].([]bson.M), bson.M{"acct_bal": 100000})
Is there a way to easily translate JSON queries from the mongo shell back to something that you can use in Go? There is some confusion in my mind as to how you use the $gte, $lte key words back into something for go format.
Upvotes: 0
Views: 613
Reputation: 121129
The Javascript statement
db.customers.find({acct_balance:{$gt:100000}}, {firstName: 1, surname:1, acct_balance:1, _id:0})
translated to Go / mgo is:
c := db.C("customers")
var results []Customer
err := c.Find(bson.M{"acct_balance": bson.M{"$gt":100000}}).
Select(bson.M{"firstName": 1, "surname":1, "acct_balance": 1}).
All(&results)
if err != nil {
// handle error
}
The Javascript find method has two arguments, the query and the projection. In the mgo, the query is specified by the single argument to Find and the projection is specified by the single argument to Select.
The code in the question merges the query and projection into the argument for Find. This does not work.
Upvotes: 1