C:\Programs\MongoDB\bin>mongofiles.exe list
connected to: 127.0.0.1
test123.txt 6
test123.txt 22
test123.txt 44
test456.txt 53
test456.txt 53
test456.txt 53
test456.txt 53
test456.txt 53
test456.txt 15
C:\Programs\MongoDB\bin>当我做mongofiles get test456.txt时,我总是得到最后一个
我用这个名字放在GridFS里的文件。我怎么才能拿到
其他的/以前的,只要他们都有重复的名字?
根据我需要说明的文件:
“一个文件名,它要么是:
您的本地文件系统或GridFS对象。“
http://docs.mongodb.org/manual/reference/program/mongofiles/
但我并不清楚“GridFS对象”在这个上下文中意味着什么。
发布于 2014-04-02 02:03:39
这个上下文中的"GridFS对象“意味着存储在GridFS集合中的对象的名称。这种区别最好通过mongofiles手册页面上的--local选项来解释。
这里需要考虑的是,您所做的是使用mongofiles实用程序提交具有“相同”文件名的项。正如该实用工具的手册页所指出的,put (请参阅命令)选项的默认行为是在存储区中创建一个新条目。这可以用--replace选项重写,以便找到任何现有内容并用您创建的新内容覆盖。
简而言之,不管文件是否包含不同的内容,您都创建了几个具有相同“对象名称”的东西。对于mongofiles实用程序来说,它只知道如何用“对象名称”来获取,所以它只需要检索它找到的第一个文件,根据它的规则。
现在,在大多数GridFS的API实现中,实际的get操作通常由_id完成。您以这种方式创建的每个“对象”仍然有它自己唯一的_id值,所以当应用这个值时,您就可以得到您想要的“对象”。
一些API实现添加了额外的查询类型方法,以便通过“文件名”或其他元数据信息查找。但大多数情况下,它们并不麻烦,因为它们实际上只是对任何集合的标准.find()或.findOne()操作,保存内容、元数据和引用(默认情况下是fs.files )。这为“查找”特定对象并通过该API的_id接口发出该get值提供了相当多的方法。
因此,虽然mongofiles是从命令行执行基本CRUD类型操作的一个很好的实用工具,但它只是一个实用程序,而不是“如何实现它”的主要实现。因此,作为实用工具,它提供了一种设置和获取对象的“方便”形式,即使用对象标识符的“文件名”部分。
还值得注意的是,您应该像对待文件系统一样对待GridFS存储,并保持“文件名”的唯一性,就像文件系统中需要的那样。
但是对于mongofiles实用程序,检索信息所需的全部内容是“名称”。尽量不要这样做,或者真正使用您所选择的语言API来代替。
发布于 2017-01-27 18:56:03
@Neil的答案是正确的。
以下是我的例子:
-d是指你的数据库,
-l是指您要上传的文件的本地文件系统路径。
put意味着你想上传一个文件
CDBG_2015_1.pdf是指GridFS中的文件名(不是本地文件系统路径)。
mongofiles -d civilpdf -l C:\jh1\share_map_online\desktop_map_export\pdf\CDBG_2015_1.pdf put CDBG_2015_1.pdf然后,您可以按关键字"CDBG“搜索文件。
mongofiles -d civilpdf search CDBG您可以将文件下载到您喜欢的任何地方,如
mongofiles -d civilpdf -l "C:\your liked whatever place" get CDBG_2015_1.pdf发布于 2021-03-09 14:47:26
我知道这个问题已经很老了,但是人们还是会在这里寻找答案,所以我想再加两分钱。
它可能是最近版本的mongofiles中的一个新特性,但是现在您可以让mongofiles实用程序也可以使用对象id,所以不再只是文件名了。要做到这一点,您可以使用以下命令:
mongofiles get_id 'ObjectId("xyz...")'在那里..。mongo对象ID字符串。
不幸的是,我看不到用mongofile来显示DB中文件的对象in的方法,因此,您需要使用普通的mongo命令行接口(mongo),例如
db.getCollection("fs.files").find({filename:/abc/i})其中abc是文件的名称。输出将类似于
{ "_id" : ObjectId("xyz..."), "chunkSize" : 261120, "uploadDate" : ISODate("2018-12-09T13:37:43.743Z"), "length" : 16904, "md5" : "08ea...", "filename" : "abc" }如果有多个名称为abc的文件,则结果中将有多个项。从这里您可以获得对象id字符串,然后使用它来调用mongofiles get_id命令.
https://stackoverflow.com/questions/22797976
复制相似问题