当键包含大写字母时无法使用 mgo 检索值
Can not retrieve value using mgo when the key contains uppercase
来自mongoDB的一个数据是
{
"_id" : ObjectId("5536def4e4b0644323e219a8"),
"title" : "The Title",
"description" : "The Description",
"timeStamp" : "21/04/2015",
"category" : "news",
"url" : "http://www.example.com",
"source" : "Evening Times",
"mainStory" : "This is the main story."
}
在我的代码中,结构是
type NewsData struct {
Title string `bson: "title" json: "title"`
TimeStamp string `bson: "timeStamp" json: "timeStamp"`
Description string `bson: "description" json: "description"`
MainStory string `bson: "mainStory" json:"mainStory"`
}
然后我用下面的代码提取信息
err = conn.Find(nil).Select(bson.M{"title": 1, "timeStamp": 1, "description": 1, "mainStory": 1}).All(&result)
但是,当我打印出result
时,timeStamp
和mainStory
的值是空的。我查了资料,说mgo把key当作小写,所以当mongoDB里的key是大写的时候,就出问题了。
我该如何解决这个问题?
字段标记中存在语法错误。删除字段标记中 ':' 和 '"' 之间的 space。
TimeStamp string `bson:"timeStamp" json:"timeStamp"`
字段标签的语法很严格。
除了这个问题,你应该添加
ID bson.ObjectId `bson:"_id"`
应用程序可以访问对象 ID 的结构。
来自mongoDB的一个数据是
{
"_id" : ObjectId("5536def4e4b0644323e219a8"),
"title" : "The Title",
"description" : "The Description",
"timeStamp" : "21/04/2015",
"category" : "news",
"url" : "http://www.example.com",
"source" : "Evening Times",
"mainStory" : "This is the main story."
}
在我的代码中,结构是
type NewsData struct {
Title string `bson: "title" json: "title"`
TimeStamp string `bson: "timeStamp" json: "timeStamp"`
Description string `bson: "description" json: "description"`
MainStory string `bson: "mainStory" json:"mainStory"`
}
然后我用下面的代码提取信息
err = conn.Find(nil).Select(bson.M{"title": 1, "timeStamp": 1, "description": 1, "mainStory": 1}).All(&result)
但是,当我打印出result
时,timeStamp
和mainStory
的值是空的。我查了资料,说mgo把key当作小写,所以当mongoDB里的key是大写的时候,就出问题了。
我该如何解决这个问题?
字段标记中存在语法错误。删除字段标记中 ':' 和 '"' 之间的 space。
TimeStamp string `bson:"timeStamp" json:"timeStamp"`
字段标签的语法很严格。
除了这个问题,你应该添加
ID bson.ObjectId `bson:"_id"`
应用程序可以访问对象 ID 的结构。