runoops.com

mongo Shell

mongo外壳是MongoDB的交互式JavaScript接口。您可以使用mongo外壳查询和更新数据以及执行管理操作。

注意,从MongoDB 4.2(和4.0.13)开始,mongo当连接到非正版MongoDB实例时,Shell将显示警告消息,因为这些实例的行为可能与官方MongoDB实例不同。例如缺少或不完整的功能,不同的功能行为等。

连接到MongoDB

前提条件

在尝试启动mongo Shell程序之前,请确保MongoDB正在运行 。

打开终端窗口(或Windows的命令提示符)并转到 目录:<mongodb installation dir>/bin

cd <mongodb installation dir>/bin

将您的代码添加到 环境变量后,您可以键入内容,而不必去目录或指定二进制文件的完整路径。<mongodb installation dir>/binPATHmongo<mongodb installation dir>/bin

非默认端口上的本地MongoDB实例

要显式指定端口,请包含--port命令行选项。例如,要使用非默认端口28015连接到在localhost上运行的MongoDB实例,请执行以下操作:

mongo --port 28015

远程主机上的MongoDB实例

要明确指定主机名和/或端口,

  • 您可以指定一个连接字符串。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:
mongo "mongodb://mongodb0.example.com:28015"

您可以使用命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>:<port>

mongo --host mongodb0.example.com:28015

您可以使用和 命令行选项。例如,要连接到在远程主机上运行的MongoDB实例,请执行以下操作:--host <host>--port <port>

mongo --host mongodb0.example.com --port 28015

具有身份验证的MongoDB实例

要连接到MongoDB实例,需要进行身份验证:

您可以在连接字符串中指定用户名,身份验证数据库以及可选的密码。例如,以用户身份连接并认证到远程MongoDB实例alice:注意如果未在连接字符串中指定密码,则shell程序将提示您输入密码。

mongo "mongodb://alice@mongodb0.examples.com:28015/?authSource=admin"

您可以使用和 , 命令行选项。例如,以用户身份连接并认证到远程MongoDB实例 :--username <user>--password--authenticationDatabase <db>alice

注意,如果指定时--password没有用户密码,那么shell程序将提示您输入密码。

mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015

连接到MongoDB副本集

要连接到副本集:

您可以在连接字符串中指定副本集名称和成员 。

mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"

如果使用DNS Seedlist连接格式,则可以指定连接字符串:

mongo "mongodb+srv://server.example.com/"

注意,使用+srv连接字符串修饰符会自动将连接的ssl选项设置为true。

您可以 从命令行选项指定副本集名称和成员 。例如,要连接到名为的副本集 :--host <replica set name>/<host1>:<port1>,<host2>:<port2>,...replA

mongo --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

TLS / SSL连接

对于TLS / SSL连接,

您可以ssl=true在连接字符串中指定选项 。

mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA&ssl=true"

如果使用DNS种子列表连接格式,则可以包括 +srv连接字符串修饰符:

mongo "mongodb+srv://server.example.com/"

注意,使用+srv连接字符串修饰符会自动将连接的ssl选项设置为true。

您可以指定--ssl命令行选项。例如,要连接到名为的副本集replA

mongo --ssl --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

mongo Shell操作

显示当前数据库:

db

切换数据库:

use <database>

要列出用户可用的数据库:

show dbs

可以切换到不存在的数据库。首次将数据存储在数据库中(例如通过创建集合)时,MongoDB会创建数据库。例如,以下在操作期间创建数据库 myNewDatabase和集合 :myCollectioninsertOne()

use myNewDatabase
db.myCollection.insertOne( { x: 1 } );

db.myCollection.insertOne()是mongo shell中可用的方法之一。

  • db 指当前数据库。
  • myCollection 是集合的名称。

如果mongo Shell程序不接受集合的名称,则可以使用其他db.getCollection()语法。例如,如果集合名称包含空格或连字符,以数字开头或与内置函数冲突:

db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()