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>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,mongofiles get test456.txt我总是得到
我在GridFS中使用该名称放的最后一个文件.
如果它们都有重复的名称,我如何获得其他/以前的?
根据我需要指定的文档:
"文件名,它是:
本地文件系统上的文件名或GridFS对象."
http://docs.mongodb.org/manual/reference/program/mongofiles/
但对于我来说,"GridFS对象"在这种情况下意味着什么并不是很清楚.
在此上下文中,"GridFS对象"表示存储在GridFS集合中的对象的名称.可以通过--localmongofiles手册页上的选项最好地解释这种区别.
您需要考虑的是,您所做的是使用mongofiles实用程序提交具有"相同"文件名的项目.如该实用程序的手册页中所述,put(请参阅命令)选项的默认行为是在商店中创建新条目.可以使用该--replace选项覆盖此选项,以便找到任何现有内容并使用您创建的新内容覆盖.
简而言之,无论文件是否包含不同的内容,您都创建了具有相同"对象名称"的多个内容.就mongofiles实用程序而言,它只知道如何通过"对象名称"获取,因此它将根据它的规则检索它找到的第一个.
现在在GridFS的大多数API实现中,实际get操作通常由_id.您以这种方式创建的每个"对象"仍然拥有它自己的唯一_id值,因此在应用它时,您可以获得所需的"对象".
某些API实现添加了其他查询类型方法,以便通过"filename"或其他元数据信息进行查找.但大多数情况下他们并不打扰,因为这些实际上只是标准.find()或.findOne()操作任何集合保存内容元数据和引用(默认情况下为fs.files).这提供了一种超过合理数量的方法来"查找"特定对象并_id通过该getAPI 的接口发布该值.
因此,虽然mongofiles从命令行执行基本的CRUD类型操作是一个很好的实用程序,但它只是一个实用程序,而不是"如何做"的主要实现.因此,作为实用程序,它提供了设置和获取对象的"便利"形式,使用对象标识符的"文件名"部分.
另外值得注意的是,您应该像文件系统一样对待GridFS存储,并保持您的"文件名"唯一,就像文件系统中所需的一样.
但就mongofiles实用程序而言,"名称"是您必须继续检索信息的全部内容.尽量不这样做,或者真正使用您选择的语言API来完成工作.
| 归档时间: |
|
| 查看次数: |
4610 次 |
| 最近记录: |