折腾:
【已解决】把本地的音频字幕等数据存储到本地MongoDB数据库中
期间,已经可以用put上传/存储文件到GridFS中了。
现在接着去试试,如何下载get文件,希望基于文件名或id去下载。
mongodb gridfs 下载文件
mongodb+GridFS文件的上传下载删除 – CSDN博客
MongoDB基于GridFS实现文件的分布式存储 – CSDN博客
MongoDB基于GridFS管理文件 – 小艾.luoaz – 博客园
已有:
<code>> use gridfs switched to db gridfs > list 2018-03-28T16:18:12.812+0800 E QUERY [thread1] ReferenceError: list is not defined : @(shell):1:1 > show collections fs.chunks fs.files > db.fs.files.find().pretty() { "_id" : ObjectId("5abb397ca4bc71fc7d71c7bd"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T06:43:08.613Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" } </code>
去试试
<code>➜ 英语资源 mongofiles -d gridfs get "Otto the Cat.MP3" 2018-03-28T17:05:23.198+0800 connected to: localhost 2018-03-28T17:05:23.204+0800 Failed: error opening GridFS file 'Otto the Cat.MP3': not found ➜ 英语资源 mongofiles -d gridfs get "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" 2018-03-28T17:05:47.401+0800 connected to: localhost finished writing to /Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3 </code>
发现:
只能用filename的全部名称才可以。
默认会写入到本地的文件夹中的:
所以再去搞清楚:
【已解决】mongofiles中put保存和get下载获取时指定文件名
在此期间,通过:
mongofiles — MongoDB Manual 3.6
mongofiles – MongoDB GridFS Utility – Linux Man Pages (1)
顺带看到了一些其他有关的参数:
“–replace, -r¶
Alters the behavior of mongofiles put to replace existing GridFS objects with the specified local file, rather than adding an additional object with the same name.
In the default operation, files will not be overwritten by a mongofiles put option.”
去试试,默认的非replace效果,期望的是新增加一个文件:
<code>➜ 英语资源 mongofiles -d gridfs put "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" 2018-03-28T17:26:34.994+0800 connected to: localhost added file: /Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3 </code>
另外一个终端去find看看:
<code>> db.fs.files.find().pretty() { "_id" : ObjectId("5abb397ca4bc71fc7d71c7bd"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T06:43:08.613Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" } { "_id" : ObjectId("5abb5fcaa4bc711531cee35c"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T09:26:35.121Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" } </code>
果然是。
然后加上–replace试试
<code>➜ 英语资源 mongofiles -d gridfs put "Otto the Cat.MP3" --replace --local "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" 2018-03-28T17:44:24.820+0800 connected to: localhost 2018-03-28T17:44:24.828+0800 removed all instances of 'Otto the Cat.MP3' from GridFS added file: Otto the Cat.MP3 </code>
可以看到,显示出,删除之前已存在的文件了。
find结果也可以看到:
<code>> db.fs.files.find().pretty() { "_id" : ObjectId("5abb397ca4bc71fc7d71c7bd"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T06:43:08.613Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" } { "_id" : ObjectId("5abb5fcaa4bc711531cee35c"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T09:26:35.121Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "/Users/crifan/dev/dev_root/company/naturling/数据/FromMaggie/英语资源/All Aboard Reading/音频/Otto the Cat.MP3" } { "_id" : ObjectId("5abb6194a4bc71165f9f49f5"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T09:34:12.537Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "Otto the Cat" } { "_id" : ObjectId("5abb63f8a4bc7117f07dcf9d"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-03-28T09:44:24.915Z"), "length" : 8338105, "md5" : "b7660d833085e9e1a21813e4d74b0cc3", "filename" : "Otto the Cat.MP3" } </code>
只有一个Otto the Cat.MP3
且id也从之前的:
“_id” : ObjectId(“5abb61ffa4bc7116a6fa31d4”),
变成现在的:
“_id” : ObjectId(“5abb63f8a4bc7117f07dcf9d”),
了,是新的file了。
转载请注明:在路上 » 【已解决】MongoDB的GridFS中基于文件名或id去下载文件