database - MongoDB 获取集合中的所有文档会使用 mgo 提供一个空的结构切片
问题描述
我已通过以下方式将数据插入到 mongodb
{
"_id" : ObjectId("5c80e9cc3bf127cfc80ba5dc"),
"resp" : [
{
"name" : "by",
"gender" : "synced",
"age" : "response",
"hobby" : "submitted",
"mobile" : "revision"
},
{
"name" : "byoooooo",
"gender" : "sytewed",
"age" : "se",
"hobby" : "subed",
"mobile" : "revissaaon"
}
]
}
使用这种方法
func (d *CollectDAO) Insert(responses []*models.FormData) error {
resp := models.Responses{
Data: responses,
}
err := db.C(formsCollection).Insert(resp)
return err
}
这是插入方法中使用的结构
type FormData struct {
Name string `csv:"name" json:"name" bson:"name"`
Gender string `csv:"gender" json:"gender" bson:"gender"`
Age string `csv:"age" json:"age" bson:"age"`
Hobby string `csv:"hobby" json:"hobby" bson:"hobby"`
MobileNo string `csv:"mobile" json:"mobile" bson:"mobile"`
}
处理程序从文件中读取样本 csv 数据。这是csv数据
name,gender,age,hobby,mobile
by,synced,response,submitted,revision
byoooooo,sytewed,se,subed,revissaaon
然后将其插入 mongo
查询我收藏的所有文档时,我得到一个空响应
func (d *CollectDAO) FindAll() (models.Responses, error) {
var responses []models.Responses
err := db.C(formsCollection).Find(nil).All(&responses)
if err != nil {
log.Fatal(err)
}
log.Printf("all docs %v\n", responses)
return responses, err
}
当我尝试记录结构的值时,我得到一个空结构。这是我最后用来放入响应切片的响应结构。
type Responses struct {
Data []*FormData `json:"response"`
}
我究竟做错了什么?我只需要实现一个处理程序,它将集合中的所有数据作为结构返回。
在客户端,我收到此错误
unexpected end of JSON input
{ObjectIdHex("") []}
解决方案
该mgo
包使用bson
标签将结构字段映射到 MongoDB 中的文档字段。
所以你的Responses
类型应该是这样的:
type Responses struct {
Data []*FormData `json:"response" bson:"resp"`
}
请注意,您必须使用此结构(带有bson
标记)保存文档才能将结果提取到此类型的值中。
推荐阅读
- java - 向预先编写的程序添加更多类
- java - 如何在片段中单击按钮时检索 EditTexts 和 Spinners?
- c++ - 如何检查输入是否为字符并显示为“无效输入”,否则将按原样运行
- javascript - document.scrollTo 在运行时不起作用
- python - Django中是否有VideoField之类的东西?
- delphi-10.3-rio - 无法使用 Delphi 10.3 在 Android 上获取 Documents 文件夹的正确路径
- java - @AutoAnnotation 有什么用?怎么可能使用?
- r - 使用 plotOutput 中的过滤器获取 Shiny 应用程序中的动态用户定义数据
- python - 如何在不使用 enumerate for (i, n) in enumerate(names) 的情况下编写这行代码
- javascript - 这真的被认为是一个 javascript 闭包吗?