在 Golang 中使用 mgo 包无法获取 mongodb 中对象的 "_id" 字段

浏览:56日期:2023-07-14

问题描述

这是我的结构体:

type Article struct { Id bson.ObjectId `json:'id'bson:'_id'` Title string`json:'title'` Author string`json:'author'` Date string`json:'date'` Tags string`json:'tags'` Content string`json:'content'` Status string`json:'status'`}

这是我获取 mongodb 中数据的函数:

func AllArticles() []Article { articles := []Article{} err := c_articles.Find(bson.M{}).All(&articles) if err != nil {panic(err) } fmt.Println(articles) return articles}

这是打印结果:

[{ObjectIdHex('') Hello1 DYZ 2013-11-10 abc This is another content. published} {ObjectIdHex('') Hello2 DYZ 2013-11-14 abc This is the content. published} {ObjectIdHex('') Hello3 DYZ 2013-11-15 abc This is the content haven’t been published. draft}]

可以看到,对应_id的值是ObjectIdHex(''),但是在数据库中的数据是这样的:

{ '_id' : ObjectId('5281b83afbb7f35cb62d0834'), 'title' : 'Hello1', 'author' : 'DYZ', 'date' : '2013-11-10', 'tags' : 'abc', 'content' : 'This is another content.', 'status' : 'published' }

即使我把筛选条件变成:

err := c_articles.Find(bson.M{'_id': bson.ObjectIdHex('5281b83afbb7f35cb62d0834')}).All(&articles)

打印出来的数据仍然是上面那样,没有值。这是为什么?

问题解答

回答1:

Id bson.ObjectId json:'id'bson:'_id'

json和bson之间的空格是否用了tab?

相关文章: