mongofiles

在本页面

macOS Sierra and Go 1.6 Incompatibility

在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongofile。

  • mongofiles

Synopsis

mongofilesUtil 使您可以从命令行操作存储在 MongoDB 实例GridFS对象中的文件。它提供了存储在文件系统中的对象与 GridFS 之间的接口,因此它特别有用。

所有mongofiles命令的格式如下:

mongofiles <options> <commands> <filename>

mongofiles命令的组件为:

  • Options。您可以使用这些选项中的一个或多个来控制mongofiles的行为。

  • Commands。使用以下命令之一确定mongofiles的操作。

  • 文件名可以是:本地文件系统上的文件名或 GridFS 对象。

从系统命令行运行mongofiles,而不是mongo shell。

Important

对于replica setsmongofiles只能从集合的primary中读取。

Required Access

为了连接到使用--auth选项强制执行授权的mongod,您必须使用--username--password选项。连接用户必须至少拥有:

  • 使用listsearchget命令时所访问数据库的read角色,

  • 使用putdelete命令时,被访问数据库的readWrite角色。

Options

在 3.0.0 版中进行了更改:mongofiles删除了--dbpath以及相关的--directoryperdb--journal选项。要使用mongofiles,您必须根据需要对正在运行的mongodmongos实例运行mongofiles

  • --help ``

    • 返回有关 mongofiles 选项和用法的信息。
  • --verbose `,` `-v`

    • 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如-vvvvv)来提高-v形式的详细程度。
  • --quiet ``

    • 在安静模式下运行 mongofiles ,以尝试限制输出量。

此选项禁止显示:

  • database commands的输出

  • replication activity

  • 连接接受的事件

  • 连接关闭事件

  • --version ``

    • 返回 mongofiles 版本号。
  • --uri <connectionString>

    • 3.4.6 版中的新功能。

指定可解析的URI 连接字符串以连接到 MongoDB 部署。

--uri "mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"

有关连接字符串的组成部分的更多信息,请参见连接字符串 URI 格式文档。

Important

以下命令行选项不能与--uri选项一起使用:

而是将这些选项指定为--uri连接字符串的一部分。

  • --host <hostname><:port>
    • 指定保存 GridFS 系统的mongod的可解析主机名。默认情况下mongofiles尝试连接到在 localhost 端口号27017上运行的 MongoDB 进程。

(可选)指定端口号以连接在 27017 以外的端口上运行的 MongoDB 实例。

Note

您不能同时指定--host--uri

  • --port <port>
    • 默认:27017

指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。

Note

您不能同时指定--port--uri

  • --ipv6 ``
    • 已在 3.0 版中删除.

启用 IPv6 支持,并允许 mongofiles 使用 IPv6 网络连接到 MongoDB 实例。在 MongoDB 3.0 之前,您必须指定--ipv6才能使用 IPv6.在 MongoDB 3.0 和更高版本中,始终启用 IPv6.

  • --ssl ``
    • 2.6 版的新功能。

启用与启用了 TLS/SSL 支持的mongodmongos的连接。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslCAFile <filename>
    • 2.6 版的新功能。

指定包含来自证书颁发机构的根证书链的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

从 3.4 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

Warning

版本 3.2 和更早版本: 对于到mongodmongos的 TLS/SSL 连接(--ssl),如果 mongofiles 在没有--sslCAFile的情况下运行,则 mongofiles 将不会尝试验证服务器证书。这会导致已过期的mongodmongos证书以及冒充有效mongodmongos实例的外部进程的漏洞。确保始终指定 CA 文件以在可能进行入侵的情况下验证服务器证书。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslPEMKeyFile <filename>
    • 2.6 版的新功能。

指定同时包含 TLS/SSL 证书和密钥的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificatesmongodmongos时,此选项是必需的。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslPEMKeyPassword <value>
    • 2.6 版的新功能。

指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongofiles 都会从所有日志记录和报告输出中删除密码。

如果 PEM 文件中的私钥已加密并且您未指定--sslPEMKeyPassword选项,则 mongofiles 将提示您 Importing 密码。参见TLS/SSL 证书密码短语

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslCRLFile <filename>
    • 2.6 版的新功能。

指定包含证书吊销列表的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslAllowInvalidCertificates ``
    • 2.6 版的新功能。

绕过服务器证书的验证检查,并允许使用无效的证书。使用allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。

从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificatesssl.allowInvalidCertificates: true,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslAllowInvalidHostnames ``
    • 3.0 版中的新功能。

禁用 TLS/SSL 证书中的主机名验证。允许 mongofiles 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

  • --sslFIPSMode ``
    • 2.6 版的新功能。

指示 mongofiles 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。

Note

兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB

  • --username <username> , -u <username>

Note

您不能同时指定--username--uri

  • --password <password> , -p <password>

在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password--username选项,或者像--password ""一样将空字符串指定为--password值。

Note

您不能同时指定--password--uri

Note

您不能同时指定--authenticationDatabase--uri

  • --authenticationMechanism <name>
    • 默认:SCRAM-SHA-1

在 2.6 版中进行了更改:添加了对PLAINMONGODB-X509身份验证机制的支持。

在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1身份验证机制的支持。将默认机制更改为SCRAM-SHA-1

指定 mongofiles 实例用于对mongodmongos进行身份验证的身份验证机制。

ValueDescription
SCRAM-SHA-1RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。
MONGODB-CRMongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*)
MONGODB-X509MongoDB TLS/SSL 证书认证。
GSSAPI (Kerberos)使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。
PLAIN(LDAP SASL)使用 LDAP 的外部身份验证。您也可以使用PLAIN对数据库中的用户进行身份验证。 PLAIN以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。

Note

您不能同时指定--authenticationMechanism--uri

  • --gssapiServiceName ``
    • 2.6 版的新功能。

使用GSSAPI/Kerberos指定服务的名称。仅当服务未使用默认名称mongodb时才需要。

此选项仅在 MongoDB Enterprise 中可用。

  • --gssapiHostName ``
    • 2.6 版的新功能。

使用GSSAPI/Kerberos指定服务的主机名。 如果计算机的主机名与 DNS 解析的主机名不匹配。

此选项仅在 MongoDB Enterprise 中可用。

  • --db <database> , -d <database>
    • 指定要在其上运行 mongofiles 的数据库的名称。

Note

您不能同时指定--db--uri

  • --local <filename> , -l <filename>
    • 指定用于获取和放置操作的文件的本地文件系统名称。

mongofiles putmongofiles get 命令中,必需的<filename>修饰符指向对象在 GridFS 中将具有的名称。 mongofiles假定这反映了本地文件系统上的文件名。此设置将覆盖此默认设置。

  • --type <MIME>
    • 提供指定MIME类型来描述插入 GridFS 存储的文件的功能。 mongofiles在默认操作中省略了此选项。

仅与 mongofiles put 操作一起使用。

  • --replace `,` `-r`
    • 更改 mongofiles put 的行为,以使用指定的本地文件替换现有的 GridFS 对象,而不是添加具有相同名称的其他对象。

在默认操作中, mongofiles put 选项不会覆盖文件。

  • --prefix string
    • 默认:fs

要使用的 GridFS 前缀。

  • --writeConcern <document>
    • 默认:多数

mongofiles 执行的每个写操作指定write concern

使用w options将写关注点指定为文档。例如:

--writeConcern "{w:'majority'}"

Commands

  • list <prefix>

    • 列出 GridFS 存储中的文件。 list之后指定的字符(例如<prefix>)可以选择将返回的项目列表限制为以该字符串开头的文件。
  • search <string>

    • 列出 GridFS 存储中名称与<string>的任何部分匹配的文件。
  • put <filename>

    • 将指定的文件从本地文件系统复制到 GridFS 存储中。

在这里,<filename>表示对象在 GridFS 中将具有的名称,而mongofiles假定这反映了文件在本地文件系统上具有的名称。如果本地文件名不同,请使用mongofiles --local选项。

  • get <filename>

    • 将指定的文件从 GridFS 存储复制到本地文件系统。

<filename>表示对象在 GridFS 中将具有的名称。 mongofiles使用 GridFS 中的文件filename将文件写入本地文件系统。要为本地文件系统上的文件选择其他位置,请使用--local选项。

  • get_id "<ObjectId>"

    • 3.2.0 版中的新功能。

将指定的文件从 GridFS 存储复制到本地文件系统。

<ObjectId>表示 GridFS 中对象的扩展 JSON _idmongofiles使用 GridFS 中的文件filename将文件写入本地文件系统。要为本地文件系统上的文件选择其他位置,请使用--local选项。

  • delete <filename>

    • 从 GridFS 存储中删除指定的文件。
  • delete_id "<ObjectId>"

    • 3.2.0 版中的新功能。

从 GridFS 存储中删除指定的文件。使用文件_id指定文件。

Examples

要返回records数据库中GridFS集合中所有文件的列表,请在系统 Shell 上使用以下调用:

mongofiles -d records list

mongofiles实例将连接到27017 localhost 接口上运行的mongod实例,以在不同的端口或主机名上指定相同的操作,并发出类似于以下命令之一的命令:

mongofiles --port 37017 -d records list
mongofiles --host db1.example.net -d records list
mongofiles --host db1.example.net --port 37017 -d records list

如果要在其他端口或主机上连接mongod实例,请根据需要修改以下任何命令。

要将名为32-corinth.lp的文件上载到records数据库中的 GridFS 集合,可以使用以下命令:

mongofiles -d records put 32-corinth.lp

要从records数据库中的此 GridFS 集合中删除32-corinth.lp文件,可以使用以下命令:

mongofiles -d records delete 32-corinth.lp

要在records数据库的 GridFS 集合中搜索名称中带有字符串corinth的文件,可以使用以下命令:

mongofiles -d records search corinth

要列出records数据库中以字符串32开头的 GridFS 集合中的所有文件,可以使用以下命令:

mongofiles -d records list 32

要从名为recordsrecords数据库中的 GridFS 集合中获取文件,可以使用以下命令:

mongofiles -d records get 32-corinth.lp

要使用_id: ObjectId("56feac751f417d0357e7140f")records数据库中的 GridFS 集合中获取文件,可以使用以下命令:

mongofiles -d records get_id 'ObjectId("56feac751f417d0357e7140f")'

您必须在_id前后加上引号。