2015-01-19 3 views
0

Смутно о том, как перевести Javascript команды JSON обратно во что-то пойдут, поймут.Задание запроса в MongoDB с помощью Go

Ok так вот запрос в Монго оболочки ::

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

Результаты ::

{ "Имя": "Сюзанн", "фамилия": "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 запросов из Монго оболочки обратно к чему-то, что вы можете использовать в Go? В моем сознании есть некоторая путаница в том, как вы используете ключевые слова $ gte, $ lte для чего-то для формата go.

+0

Я также попробовал, C: = session.DB ("MYDB") С ("клиенты") \t Gt:. = 100000 \t п: 1 = \t зп: = 1 \t Результаты вар [ ] Клиент \t ERR = c.Find ( \t \t bson.M { \t \t \t "acct_bal": bson.M { \t \t \t \t "$ GT": г.т., \t \t \t \t "FirstName": п, \t \t \t \t "фамилия": зп, \t \t \t}, \t \t}) Все (и результаты) Теперь я не получаю ошибки, но результат. «ноль» – Deliri

ответ

1

Javascript заявление

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

переведены на Go/МдО является:

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 
} 

find метод Javascript имеет два аргумента query и projection. В mgo запрос задается единственным аргументом Find, и проекция определяется единственным аргументом Select.

Код в вопросе объединяет запрос и проекцию в аргумент для поиска. Это не работает.