Mongodb-go-адаптер FindOne выплевывает {} и {0} - PullRequest
0 голосов
/ 02 июля 2019

В общем, результат FindOne fmt.print {}. Мне нужно вывести значение.

Я использую стандартную настройку из документации: https://docs.mongodb.com/ecosystem/drivers/go/

У меня проблемы с созданием запроса, потому что большинство примеров отличаются; Я пытался следовать этому шаблону: https://github.com/ruanbekker/code-examples/blob/master/mongodb/golang/examples.go

Ссылочный объект:

_id:5d1a8829cf5042c071458db6
name:" !hello"
Value:" World %c end"
Counter:0 

Примеры кодов:

type userModel struct {
    Uname string
    Url   string
}

var result userModel
filter := bson.D{{"name", " !hello"}}
db := Client.Database("Nothing").Collection("databaseC")
db.FindOne(context.Background(), filter).Decode(&result)
fmt.Println(result)
fmt.Println(result.Url)

// Вывод {0} // вывод пустой

type userModel struct {
    Name    string
    Value   string
    Counter int
}
var result userModel
findOneOptions := options.FindOne()
findOneOptions.SetProjection(bson.D{{"name", "!new"}})

filter := bson.D{{}}
db := Client.Database("Nothing").Collection("databaseC")
db.FindOne(context.TODO(), filter, findOneOptions).Decode(&result)
fmt.Println(result)

// Ничего не выводить

// другая коллекция с простой структурой

type userModel struct {
    Uname string
    Url   string
}
var result userModel
filter := bson.D{{"name", "object"}}
db := Client.Database("Nothing").Collection("Video")
db.FindOne(context.Background(), filter).Decode(&result)
fmt.Println(result)
fmt.Println(result.Url)

// Вывод {} // вывод пустой

1 Ответ

0 голосов
/ 02 июля 2019
type userModel struct {
    name    string `bson:"name"`
    Value   string `bson:"Value"`
    Counter int    `bson:"Counter"`
}
var result userModel
filter := bson.M{"name": " !hello"}
db := Client.Database("Nothing").Collection("databaseC")
db.FindOne(context.Background(), filter).Decode(&result)
fmt.Println(result)
fmt.Println(result.Value)

Выводит фактическое значение.Спасибо @ icza

...