首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB -蒙古文件

MongoDB -蒙古文件
EN

Stack Overflow用户
提问于 2014-04-01 22:15:12
回答 3查看 7.4K关注 0票数 2
代码语言:javascript
复制
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对象”在这个上下文中意味着什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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来代替。

票数 5
EN

Stack Overflow用户

发布于 2017-01-27 18:56:03

@Neil的答案是正确的。

以下是我的例子:

-d是指你的数据库,

-l是指您要上传的文件的本地文件系统路径。

put意味着你想上传一个文件

CDBG_2015_1.pdf是指GridFS中的文件名(不是本地文件系统路径)。

代码语言:javascript
复制
 mongofiles -d civilpdf -l  C:\jh1\share_map_online\desktop_map_export\pdf\CDBG_2015_1.pdf put CDBG_2015_1.pdf

然后,您可以按关键字"CDBG“搜索文件。

代码语言:javascript
复制
mongofiles -d civilpdf search CDBG

您可以将文件下载到您喜欢的任何地方,如

代码语言:javascript
复制
mongofiles -d civilpdf -l "C:\your liked whatever place"  get CDBG_2015_1.pdf
票数 3
EN

Stack Overflow用户

发布于 2021-03-09 14:47:26

我知道这个问题已经很老了,但是人们还是会在这里寻找答案,所以我想再加两分钱。

它可能是最近版本的mongofiles中的一个新特性,但是现在您可以让mongofiles实用程序也可以使用对象id,所以不再只是文件名了。要做到这一点,您可以使用以下命令:

代码语言:javascript
复制
mongofiles get_id 'ObjectId("xyz...")'

在那里..。mongo对象ID字符串。

不幸的是,我看不到用mongofile来显示DB中文件的对象in的方法,因此,您需要使用普通的mongo命令行接口(mongo),例如

代码语言:javascript
复制
db.getCollection("fs.files").find({filename:/abc/i})

其中abc是文件的名称。输出将类似于

代码语言:javascript
复制
{ "_id" : ObjectId("xyz..."), "chunkSize" : 261120, "uploadDate" : ISODate("2018-12-09T13:37:43.743Z"), "length" : 16904, "md5" : "08ea...", "filename" : "abc" }

如果有多个名称为abc的文件,则结果中将有多个项。从这里您可以获得对象id字符串,然后使用它来调用mongofiles get_id命令.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22797976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档