怎么从GridFS里面取出来保存的所有的文件,然后再按条件筛选

pj199 2014-08-15 11:03:10
RT:从gridfs里面取文件用了func (gfs *GridFS) Find(query interface{}) *Query
gfs := db.GridFS("fs")
iter := gfs.Find(nil).Iter()
之后看他的返回类型是 *Query,然后去文档里找,却不知道有哪个能处理得到所有的文件的信息,然后再这些信息保存起来
...全文
446 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
svenwang 2014-08-15
  • 打赏
  • 举报
回复
其实你可以自己搜索一下,你遇到的问题别人一般也会遇到。 我对mgo不怎么了解,但是我搜到类似的例子: http://godoc.org/labix.org/v1/mgo#Iter.Next

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Err() != nil {
    panic(iter.Err())
}
pj199 2014-08-15
  • 打赏
  • 举报
回复
引用 4 楼 svenwang 的回复:
[quote=引用 3 楼 u012905769 的回复:] [quote=引用 1 楼 svenwang 的回复:] 其实你可以自己搜索一下,你遇到的问题别人一般也会遇到。 我对mgo不怎么了解,但是我搜到类似的例子: http://godoc.org/labix.org/v1/mgo#Iter.Next

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Err() != nil {
    panic(iter.Err())
}
我搜的这个问题,看到的都是java里面的一些处理,剩下的关于go的就剩这些官方文档了。这段也在文档里看了,怎是感觉这个函数的功能不是很确切,不是我要的,看了几眼就放过去,我再仔细试一试[/quote] 这段代码就是枚举出所有文件,只是例子里是经过排序的。 你要的功能不是枚举出每个文件,那么是什么呢?[/quote]
引用 4 楼 svenwang 的回复:
[quote=引用 3 楼 u012905769 的回复:] [quote=引用 1 楼 svenwang 的回复:] 其实你可以自己搜索一下,你遇到的问题别人一般也会遇到。 我对mgo不怎么了解,但是我搜到类似的例子: http://godoc.org/labix.org/v1/mgo#Iter.Next

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Err() != nil {
    panic(iter.Err())
}
我搜的这个问题,看到的都是java里面的一些处理,剩下的关于go的就剩这些官方文档了。这段也在文档里看了,怎是感觉这个函数的功能不是很确切,不是我要的,看了几眼就放过去,我再仔细试一试[/quote] 这段代码就是枚举出所有文件,只是例子里是经过排序的。 你要的功能不是枚举出每个文件,那么是什么呢?[/quote] 确实可以,我一开始没有仔细看,而且用的时候我是直接在保存的后面添加这段代码,结果并不能显示当前保存的文件,而我一共就存了两个文件用来测试,一个固定的,一个用来测试重复的要删除重建。所以找个函数的效果就不是我想要的,就跳过了这个函数,受教训了以后仔细看文档
svenwang 2014-08-15
  • 打赏
  • 举报
回复
引用 3 楼 u012905769 的回复:
[quote=引用 1 楼 svenwang 的回复:] 其实你可以自己搜索一下,你遇到的问题别人一般也会遇到。 我对mgo不怎么了解,但是我搜到类似的例子: http://godoc.org/labix.org/v1/mgo#Iter.Next

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Err() != nil {
    panic(iter.Err())
}
我搜的这个问题,看到的都是java里面的一些处理,剩下的关于go的就剩这些官方文档了。这段也在文档里看了,怎是感觉这个函数的功能不是很确切,不是我要的,看了几眼就放过去,我再仔细试一试[/quote] 这段代码就是枚举出所有文件,只是例子里是经过排序的。 你要的功能不是枚举出每个文件,那么是什么呢?
pj199 2014-08-15
  • 打赏
  • 举报
回复
引用 1 楼 svenwang 的回复:
其实你可以自己搜索一下,你遇到的问题别人一般也会遇到。 我对mgo不怎么了解,但是我搜到类似的例子: http://godoc.org/labix.org/v1/mgo#Iter.Next

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Err() != nil {
    panic(iter.Err())
}
我搜的这个问题,看到的都是java里面的一些处理,剩下的关于go的就剩这些官方文档了。这段也在文档里看了,怎是感觉这个函数的功能不是很确切,不是我要的,看了几眼就放过去,我再仔细试一试
svenwang 2014-08-15
  • 打赏
  • 举报
回复
gopkg.in/mgo本身的文档里也有例子:

gfs := db.GridFS("fs")
query := gfs.Find(nil).Sort("filename")
iter := query.Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
    fmt.Printf("Filename: %s\n", f.Name())
}
if iter.Close() != nil {
    panic(iter.Close())
}

2,348

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • 俺叫西西弗斯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧