英文:
How do you select all records from a mongodb collection in golang using mgo
问题
在MongoDB中,执行类似db.mycollection.find()
的操作会返回集合中的所有文档。
在使用Go语言的labix.org/v2/mgo包时,如果我执行以下操作:
query := db.C("client").Find();
它会报错,要求以接口的形式提供输入。我只需要检索所有文档并遍历它们,目前不需要任何筛选条件。我该如何实现这个效果?我看到的所有示例似乎都有筛选条件。
英文:
In MongoDB doing something like db.mycollection.find()
returns all documents in a collection.
When working in GoLang using the package labix.org/v2/mgo and I do for example:
query := db.C("client").Find();
It complains that it requires input in the form of an interface. All I need to do is retrieve all documents and iterate through them and display each one for now. How do I achieve this effect? All examples I have seen seem to have filters in place.
答案1
得分: 47
找到了一个解决方案:
var results []client
err := db.C("client").Find(nil).All(&results)
if err != nil {
// TODO: 对错误进行处理
} else {
fmt.Println("全部结果:", results)
}
英文:
Found a solution:
var results []client
err := db.C("client").Find(nil).All(&results)
if err != nil {
// TODO: Do something about the error
} else {
fmt.Println("Results All: ", results)
}
答案2
得分: 0
func (uc UserController) GetUsersList(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
var u []models.User
// 获取用户
if err := uc.session.DB("mydb").C("users").Find(nil).All(&u); err != nil {
w.WriteHeader(404)
fmt.Println("Results All: ", u)
return
}
uj, _ := json.Marshal(u)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
fmt.Fprintf(w, "%s", uj)
}
英文:
func (uc UserController) GetUsersList(w http.ResponseWriter,r *http.Request,p httprouter.Params){
var u []models.User
// Fetch user
if err := uc.session.DB("mydb").C("users").Find(nil).All(&u); err != nil {
w.WriteHeader(404)
fmt.Println("Results All: ", u)
return
}
uj, _ := json.Marshal(u)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
fmt.Fprintf(w, "%s", uj)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论