복붙노트

[MONGODB] Golang는 빈 객체를 받고 MGO

MONGODB

Golang는 빈 객체를 받고 MGO

나는 이동 API 개발을 배우려고 노력하고있다. 나는 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)
}

기본적으로 나는 인쇄 라인에 빈 객체를 얻고 있지만 정확한 메시지 수를 얻고있다. 그 도움이된다면 나는 robomongo와 개체를 삽입했다.

해결법

  1. ==============================

    1.당신은 다른 사람들이 산화 마그네슘 패키지에 의해 무시되고, 구조체의 필드를 내 보내야합니다. 변화는 사용자 및 데이터에 대한 사용자의 필드.

    당신은 다른 사람들이 산화 마그네슘 패키지에 의해 무시되고, 구조체의 필드를 내 보내야합니다. 변화는 사용자 및 데이터에 대한 사용자의 필드.

    type users struct {
        User string `bson:"user" json:"user"`
        Data string `bson:"data" json:"data"` 
    }
    

    구조체 값을 변환 / 저장 /로부터 검색하여 MongoDB 기본적으로, 필드 명을 사용한다. 당신은 다른 이름을 사용하려는 경우, 당신은 이름이 필드에 매핑해야하는지 알려 태그를 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/45508642/golang-mgo-getting-empty-objects by cc-by-sa and MIT license