0

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.

1
  • I also tried, c := session.DB("mydb").C("customers") gt := 100000 fn := 1 sn := 1 var results []Customer err = c.Find( bson.M{ "acct_bal": bson.M{ "$gt": gt, "firstName": fn, "surname": sn, }, }).All(&results) Now I'm not getting errors but the result is "nil" Commented Jan 19, 2015 at 20:40

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.