首页 文章

如何在golang的MGO mongo db驱动程序中获取我的文档的ObjectId(_id)

提问于
浏览
1

我正在和MGO合作(因为我没有找到更好的东西) . 我玩过它并得到了一些结果,但我不明白如何获得文件的_id(内部Mongo ObjectId)?

例如:

type FunnyNumber struct {
    Value int
    _id string
}

session, err := mgo.Dial("127.0.0.1:27017")
if err != nil {
    panic(err)
}
defer session.Close()

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

c := session.DB("m101").C("funnynumbers")

funnynumber := FunnyNumber{}
err = c.Find(bson.M{}).One(&funnynumber)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Id one:", funnynumber._id)  // Nothing here? WHy? How to get it.
fmt.Println("Value one:", funnynumber.Value)  // 62. It's OK!

有人可以帮帮我吗?我可以在哪里阅读有关它的一些信息?我没有在MGO文档中找到任何内容

我的文件的架构是:

{ "_id" : ObjectId("50778ce69331a280cf4bcf90"), "value" : 62 }

谢谢!

1 回答

  • 2
    • _id 变量更改为大写(ID)以使其可导出 .

    • 使用 bson.ObjectID 作为其类型 .

    • 为struct FunnyNumber Id变量添加标签 . 领域

    应该完成以上三件事来获取对象Id值 .

    import "labix.org/v2/mgo/bson"
    
    type FunnyNumber struct {
        Value int `json:"value"`
        Id bson.ObjectId `bson:"_id,omitempty"`` // only uppercase variables can be exported
    }
    

    在使用mongodb时,请查看包BSON以了解有关使用bson标记的更多信息

相关问题