2016-05-24 5 views
1

Я пытаюсь проанализировать результаты запроса MongoDB от Go. У меня есть документ (ы), что выход из моей базы данных в результате:Результаты парса MongoDB Использование Go и mgo

db.getCollection('People').find({}) 

{ 
    "_id" : ObjectId("5730fd75113c8b08703b5974"), 
    "firstName" : "George", 
    "lastName" : "FakeLastName" 
} 
{ 
    "_id" : ObjectId("5730fd75113c8b08703b5975"), 
    "firstName" : "John", 
    "lastName" : "Doe" 
} 
{ 
    "_id" : ObjectId("5730fd75113c8b08703b5976"), 
    "firstName" : "Jane", 
    "lastName" : "Doe" 
} 

Вот код Go, что я пытаюсь использовать:

package main 

import (
    "fmt" 
    "log" 
    "gopkg.in/mgo.v2" 
) 

type Person struct { 
    FirstName string `bson: "firstName" json: "firstName"` 
    LastName string `bson: "lastName json: "lastName"` 
} 

func main() { 
    session, err := mgo.Dial("10.0.0.89") 
    if err != nil { 
      panic(err) 
    } 
    defer session.Close() 

    // Optional. Switch the session to a monotonic behavior. 
    session.SetMode(mgo.Monotonic, true) 

    c := session.DB("PeopleDatabase").C("People") 

    var people []Person 
    err = c.Find(nil).All(&people) 
    if err != nil { 
      log.Fatal(err) 
    } 

    for _, res := range people{ 
     fmt.Printf("Name: %v\n", res) 
    } 
} 

Когда я запускаю этот код я получаю следующий выход:

Name: { } 
Name: { } 
Name: { } 

при использовании res.FirstName вместо Реза я просто получить место вместо кнопки {}.

Я был по документации в следующих местах:

https://labix.org/mgo

https://godoc.org/gopkg.in/mgo.v2#Collection.Find

https://gist.github.com/border/3489566

Я бы extemely благодарен за любую помощь, которая может быть предоставлена. Спасибо.

ответ

0

Удалите пространство посреди тегов.

Использование bson:"firstName" вместо bson: "firstName"

type Person struct { 
    FirstName string `bson:"firstName" json:"firstName"` 
    LastName string `bson:"lastName json:"lastName"` 
} 

Из документации на https://golang.org/pkg/reflect/#StructTag,

По соглашению, строки тега конкатенация необязательно разделенных пробелами ключа: "значение" пар.

Таким образом, между ключом и значением не должно быть пробелов. Различные пары ключа и значения могут быть разделены пробелом.

+1

Это сделало трюк! Спасибо! – kccoers