cam*_*car 4 struct go mongodb mgo
我正在努力学习ap api开发.我有一个在docker容器中运行的mongodb实例.我正在尝试遵循一些指南,但我没有简单的查询.我不完全理解这里使用bson和json标签.我知道这些术语的意思.所以这是我的代码.
import (
"fmt"
"time"
"gopkg.in/mgo.v2/bson"
)
const (
hosts = "localhost:27017"
database = "my_database"
username = "dev1"
password = "password123"
collection = "users"
)
type users struct {
user string `bson:"user" json:"user"`
data string
}
func main() {
fmt.Println("Starting Application!")
info := &mgo.DialInfo{
Addrs: []string{hosts},
Timeout: 60 * time.Second,
Database: database,
Username: username,
Password: password,
}
session, err1 := mgo.DialWithInfo(info)
if err1 != nil {
panic(err1)
}
defer session.Close()
col := session.DB(database).C(collection)
var user users
var books []users
var username = "cat"
col.Insert(&users{user: "dog", data: "blah"})
err3 := col.Find(bson.M{"user": username}).One(&user)
fmt.Println(user)
fmt.Println(err3)
count, err2 := col.Count()
if err2 != nil {
panic(err2)
}
fmt.Println(fmt.Sprintf("Messages count: %d", count))
fmt.Println(user)
col.Find(bson.M{}).All(&books)
fmt.Println(books)
}
Run Code Online (Sandbox Code Playgroud)
基本上我在打印行上得到空对象但是得到了正确的消息计数.如果有帮助,我用robomongo插入对象.
您必须导出结构的字段,否则它们将被mgo包忽略.更改users为User和的字段Data.
type users struct {
User string `bson:"user" json:"user"`
Data string `bson:"data" json:"data"`
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,从MongoDB转换/存储/检索结构值时,将使用字段名称.如果要使用不同的名称,可以使用标记来指出字段应映射到的名称.