使用 Go 在 MongoDB 中指定查询

Specifying a query in MongoDB using Go

对如何将 Javascript JSON 命令翻译回 go 会理解的东西感到困惑。

好的,下面是 mongo shell::

中的查询
db.customers.find({acct_balance:{$gt:100000}}, {firstName: 1, surname:1, acct_balance:1, _id:0})

结果::

{ "firstName" : "Susann", "surname" : "Ulisch", "acct_balance" : 238897.45} { "firstName" : "Parker", "surname" : "Peet", "acct_balance" : 443314.13 }

现在我想在 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})

有没有一种方法可以轻松地将 JSON 查询从 mongo shell 转换回可以在 Go 中使用的内容?对于如何将 $gte、$lte 关键字重新用于 go 格式,我有些困惑。

Javascript 语句

db.customers.find({acct_balance:{$gt:100000}}, {firstName: 1, surname:1, acct_balance:1, _id:0})

翻译成 Go / mgo 是:

 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
 }

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

问题中的代码将查询和投影合并到 Find 的参数中。这不起作用。