mongo 命令行

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目录:

cd <mongodb installation dir>/bin

小提示

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

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

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

mongo

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

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

mongo --port 28015

连接远程MongoDB实例

指定主机名和/或端口:

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

启用身份验证的MongoDB实例

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

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

注意

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

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

注意

如果您输入--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"
mongo "mongodb+srv://server.example.com/"

注意

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

  • 您可以指定副本集名称和成员以——host<副本集名称> / < host1 >: 、< host2 >: ,……命令行方式。例如,连接到名称为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"
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参考启动MongoDB示例中进行查询。

使用mongo shell

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

db

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

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

use <database>

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

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

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

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()

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

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

[1]

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

格式化打印结果

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

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

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直到关闭符号(’)’)、(’}’)、(’]’),才会执行,像下面的例子:

> if ( x > 0 ) {
... count++;
... print (x);
... }

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

> if (x > 0
...
...
>

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

mongo shell支持快捷键:

  • 使用向上/向下箭头键滚动命令历史。可以到 .dbshell文档了解更多信息。
  • 使用自动完成或者列出可能的列表,如以下示例使用自动补全以字母“c”开头的方法:
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/

本文分享自微信公众号 - Mongoing中文社区(mongoing-mongoing),作者:译者:金江

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MongoDB技术从0到1+

    偶然机会看到mongo中文社区办了场征文活动,觉得挺有意思的,虽说自己还在成为大佬的路上,但参与一下未尝不可。于是就有了这篇文章。

    MongoDB中文社区
  • 平安科技汪洋:MongoDB 的平安路

    1月5日至6日即将在深圳举办的2018 MongoDB 年终盛会正在火热报名中,为使大家能对大会嘉宾及议题有更深的了解,在现场更好地互动,我们特地采访了部分嘉宾...

    MongoDB中文社区
  • MongoDB安全权威指南

    想象一下这样的场景:当工作劳累了一天,你已经准备好收拾行李回家的时候,下面这句话突然冒了出来:

    MongoDB中文社区
  • 微信二次开发SDK:可群控营销手机,智能回复等功能

    本次更新主要内容:Android增加是否使用FCM推送的接口,添加语音会议功能;ios实现不同模式的实时语音会议功能,添加动态更换对方实时视频显示页面的功能。 ...

    BestSDK
  • 视频 | 乘坐无人驾驶的Uber是种怎样的体验?

    今天早上,量子位的读者微信群里,讨论了一下Uber无人车的话题。虽然无人驾驶的Uber在美国已经上路测试了一段时间,但对国内用户还是有点陌生。 到底乘坐无人驾驶...

    量子位
  • pycharm用法

    1.查看路径的方法,在Navigate中选择File Path可以查看当前工程的文件路径。

    于小勇
  • fcntl函数

    fcntl函数的的功能其实很复杂,它的功能取决于cmd这个参数。在获取(修改)已打开文件状态标志的时候,cmd这个参数取F_GETFL或F_SETFL

    zy010101
  • 图解神经网络机器翻译原理:LSTM、seq2seq到Zero-Shot

    【新智元导读】这篇刊登在 blog.statsbot.co 上的博文,通过对 LSTM、BRNN、seq2seq、Zero-Shot Translation 和...

    新智元
  • JS基础知识总结(三):原型、原型链

    上一篇JS基础知识总结(二)主要了介绍深拷贝、浅拷贝的基础知识,本文将介绍JS原型、原型链的有关内容。

    前端林子
  • Uber自动驾驶货车开始运营,可提供货运服务 | 热点

    镁客网

扫码关注云+社区

领取腾讯云代金券