Голанг МГО В поисках - PullRequest
       24

Голанг МГО В поисках

0 голосов
/ 03 сентября 2018

Я пытаюсь найти своего пользователя в MongoDB, но когда я запускаю этот код:

type Person struct {
    Id bson.ObjectId `bson:"_id,omitempty"`//`json:"id" bson:"_id,omitempty"`
    username string `json:"username" bson:"username"`
    score string `json:"score" bson:"score"`
    level string `json:"level" bson:"level"`
}

result := Person{}
var id = "5b8a45912ed6f24d945bee38"
err = c.Find(bson.M{"_id":bson.ObjectIdHex(id)}).Select(bson.M{"username": 1, "score":1, "level": 1}).One(&result)

fmt.Println(result)

Просто покажи мне:

{ObjectIdHex("5b8a45912ed6f24d945bee38") }

И не возвращайте другое значение!

Большое вам спасибо за ваше время!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Просто вы должны использовать заглавную букву в первых именах структур! А также вам не нужно

 Select(bson.M{"username": 1, "score":1, "level": 1})

Вы можете написать:

err = c.FindId(bson.ObjectIdHex(id)).One(&result)

Удачи:))

0 голосов
/ 03 сентября 2018

Вы должны экспортировать все поля структуры, подлежащие маршалингу / демаршаллингу, поэтому измените их имя, чтобы начать с заглавной буквы:

type Person struct {
    Id       bson.ObjectId `bson:"_id,omitempty"`//`json:"id" bson:"_id,omitempty"`
    Username string        `json:"username" bson:"username"`
    Score    string        `json:"score" bson:"score"`
    Level    string        `json:"level" bson:"level"`
}

Также обратите внимание, что для поиска документа по его идентификатору вы можете использовать Collection.FindId():

err = c.FindId(bson.ObjectIdHex(id)).
    Select(bson.M{"username": 1, "score":1, "level": 1}).One(&result)
...