前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongo 命令行

mongo 命令行

作者头像
MongoDB中文社区
发布2020-04-24 17:40:27
3.4K0
发布2020-04-24 17:40:27
举报
文章被收录于专栏:MongoDB中文社区

MongoDB Manual (Version 4.2)> The mongo Shell

mongo shell通过JavaScript接口和MongoDB进行交互。您可以使用mongo shell去查询和更新数据以及执行管理操作。

mongo shell在MongoDB服务安装时就已集成。MongoDB还提供mongo shell作为一个独立的包。下载独立mongo shell包:

  1. 打开下载中心。对于企业mongo Shell,选择MongoDB Enterprise Server选项卡。
  2. 从下拉框选择适合您的版本和操作系统。
  3. 选择适合您的操作系统进行下载:
  • windows选择zip包进行下载
  • macOS选择TGZ包进行下载
  • linux选择shell包进行下载

一旦安装并启动MongoDB,就可以通过mongo shell去运行MongoDB实例。

注意

从MongoDB 4.0.13和4.2版本开始,当连接和官方MongoDB有区别的非官方MongoDB实例时,mongo shell 将提示警告信息,例如缺少或不完整功能,或不一样的功能。

开始用mongo shell

连接 MongoDB

前提

尝试启动mongo shell时,确保MongoDB已经运行。

打开终端窗口(或Windows命令提示符)并进入<安装mongodb 目录 > / bin目录:

代码语言:javascript
复制
cd <mongodb installation dir>/bin

小提示

添加MongoDB安装目录下的bin目录到系统环境变量中,这样你可以在任何地方执行mongo命令行,而不需要到MongoDB安装目录去执行。

用默认端口连接本地MongoDB实例

默认不添加任何参数,执行如下mongo命令,以27012端口连接MongoDB实例:

代码语言:javascript
复制
mongo

用非默认端口连接本地实例

以–port 命令行方式指定端口启动MongoDB实例。例如用一个非默认的28015端口启动MongoDB实例:

代码语言:javascript
复制
mongo --port 28015

连接远程MongoDB实例

指定主机名和/或端口:

  • 您可以指定一个连接字符串。例如,连接MongoDB实例运行在远程主机上:
代码语言:javascript
复制
mongo "mongodb://mongodb0.example.com:28015"
代码语言:javascript
复制
mongo --host mongodb0.example.com:28015
代码语言:javascript
复制
mongo --host mongodb0.example.com --port 28015

启用身份验证的MongoDB实例

连接到需要身份验证的MongoDB实例:

  • 您可以在连接信息中指定用户名、身份验证信息以及密码。例如,连接远程MongoDB实例以alice作为用户进行身份验证

注意

如果您没有在连接字符串中指定密码,shell将提示输入密码:

代码语言:javascript
复制
mongo "mongodb://alice@mongodb0.examples.com:28015/?authSource=admin"

注意

如果您输入--password后面没有用户密码,shell将提示输入密码:

代码语言:javascript
复制
mongo --username alice --password --authenticationDatabase admin --host mongodb0.examples.com --port 28015

连接到MongoDB副本集

连接到副本集

  • 您可以在连接字符串中指定副本集名称和成员。
代码语言:javascript
复制
mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"
代码语言:javascript
复制
mongo "mongodb+srv://server.example.com/"

注意

使用+ srv字符串修正符进行连接,会自动设置ssl选项为true。

  • 您可以指定副本集名称和成员以——host<副本集名称> / < host1 >: 、< host2 >: ,……命令行方式。例如,连接到名称为replA的副本集:
代码语言:javascript
复制
mongo --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

TLS/SSL连接

TLS/SSL连接时,

  • 您可以在连接字符串中指定ssl = true。
代码语言:javascript
复制
mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA&ssl=true"
代码语言:javascript
复制
mongo "mongodb+srv://server.example.com/"

注意

使用+ srv字符串修正符进行连接,会自动设置ssl选项为true。

  • 您可以指定--ssl命令行选项。例如,连接到名称为replA的副本集:
代码语言:javascript
复制
mongo --ssl --host replA/mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017

参见

想获取更多关于连接示例中使用的参数选项以及其他参数选项,可以到mongo参考启动MongoDB示例中进行查询。

使用mongo shell

查看您所使用的数据库,数据库类型:

代码语言:javascript
复制
db

该操作会返回测试库,这是默认的数据库。

如下示例,切换数据库使用 use 命令:

代码语言:javascript
复制
use <database>

在不切换数据库上下文环境的情况下,可以使用 db.getSiblingDB() 访问其他数据库。

使用show dbs列出该用户可用的数据库。[1]

您可以切换到不存在的数据库。当您第一次将数据存储在不存在的数据库中,如创建一个集合,则数据库和集合会一并创建。例如,下面在执行insertOne() 时会创建数据库myNewDatabase和集合myCollection:

代码语言:javascript
复制
use myNewDatabase
db.myCollection.insertOne( { x: 1 } );

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

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

如果mongo shell不识别一个集合名称,您可以使用替代语法db.getCollection()。例如,如果一个集合名称包含一个空格或连字符,或以一个数字开头,或与一个内置函数冲突:

代码语言:javascript
复制
db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()

mongo shell限制每行4095个字符,如果超过4095个字符,mongo shell会进行截断。

mongo shell中更多关于MongoDB的基本操作,如下:

[1]

如果以访问控制的方式部署运行,根据用户权限的不同会返回不同的结果。有关详细信息,请参阅listDatabases细节

格式化打印结果

db.collection.find()方法返回一个游标结果;然而,在mongo shell中,如果返回的游标不使用var关键字分配给一个变量,然后光标会自动打印与查询匹配的前20个文档。接着mongo shell将提示输入游标继续打印后面的20个文档。

您可以添加.pretty()来格式打印结果,如下:

代码语言:javascript
复制
db.myCollection.find().pretty()

此外,您可以在mongo shell使用以下更明确的打印方法:

  • print() 打印非格式化的数据
  • print(tojson()) 打印json格式数据,和 printjson() 一样
  • printjson() 打印json格式数据,和 print(tojson()) 一样

更多关于游标在mongo shell的操作,可以参考在mongo shell中迭代游标章节。也可在mongo shell中查看游标帮助列表

在mongo Shell多行操作

如果您以(’(’)、(’{’)、(’[’)结束,那么后续行会以省略号(…)开始,直到您输入相应的(’)’)、(’}’)、(’]’)才会结束。mongo shell直到关闭符号(’)’)、(’}’)、(’]’),才会执行,像下面的例子:

代码语言:javascript
复制
> if ( x > 0 ) {
... count++;
... print (x);
... }

输入两个空行您可以退出行延续模式,像下面的例子:

代码语言:javascript
复制
> if (x > 0
...
...
>

命令自动补全和其他键盘快捷键

mongo shell支持快捷键:

  • 使用向上/向下箭头键滚动命令历史。可以到 .dbshell文档了解更多信息。
  • 使用自动完成或者列出可能的列表,如以下示例使用自动补全以字母“c”开头的方法:
代码语言:javascript
复制
db.myCollection.c<Tab>

因为有很多集和方法以字母“c”开头, 将列出各种以“c”开头的方法。

您可以到Shell Keyboard Shortcuts查看完整快捷键列表。

.mongorc.js文件

开始时,MongoDB会检查用户的主目录的一个名为.mongorc.js的JavaScript文件,如果存在,会在第一次命令行提示前执行该js文件。如果用mongo shell 执行JavaScript文件或JavaScript表达式,或者通过–eval执行,或者创建一个a.js文件执行,在这些JavaScript执行完,会执行.mongorc.js 文件。您可以使用–norc 防止.mongorc.js被执行。

退出shell

用 quit()或者快捷键退出shell.

参见

译者:金江 MongoDB中文社区翻译小组成员

原文链接:

https://docs.mongodb.com/manual/mongo/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mongoing中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档