掌握MongoDB开发的技艺可能具有挑战性,它不仅需要理解核心概念和语法。要真正发挥MongoDB及其生态系统的全部潜力,您应该熟悉MongoDB提供的各种开发者工具。
MongoDB有着确保开发者能够使用最佳工具来处理他们的MongoDB集群和数据的悠久历史。2011年——仅在MongoDB 1.0发布两年后——10gen(现在称为MongoDB Inc.)发布了MongoDB Management Service (MMS),后来被重新品牌化为Ops Manager。Ops Manager对于使用MongoDB产品的开发者来说起到了至关重要的作用,作为一个门户来管理和监控他们的系统。这个管理工具从早期版本开始就是MongoDB生态系统的一部分,反映了MongoDB的重要性,旨在提供开发者工具,同时发展其数据库系统架构。
本章将涵盖以下主题:
对于本章讨论的所有开发者工具,您将需要一个可以连接的运行中的MongoDB集群。这可以是本地的,也可以是通过托管服务——MongoDB Atlas——启动的免费集群。
开发者工具介绍
为了促进高效的数据库管理和查询优化,MongoDB工具被设计为提高生产力、性能监控,并与开发者首选的开发环境无缝集成。在本节中,您将了解各种MongoDB工具,并探索它们的功能、用例和最佳实践,所有这些都是为了使您能够充分利用MongoDB的能力。
开发者工具的类别
由MongoDB官方设计的开发者工具服务于不同场景的用户。一些工具旨在管理您在MongoDB实例中存储的数据,一些是第三方软件的插件工具,而一些工具则用于管理和性能监控集群本身。根据用例场景,这些工具可以分类如下:
MongoDB Shell (mongosh)
MongoDB Shell (mongosh)是一个基于JavaScript和Node.js的完全功能的REPL环境,用于与MongoDB部署交互。mongosh是一个强大且多功能的命令行界面,充当解释器。您可以使用mongosh直接与数据库通信,并在数据库上执行创建、读取、更新、删除(CRUD)操作、管理操作、聚合、索引等。
安装
您可以使用以下任何方法安装mongosh:
npm install -g mongosh
使用mongosh连接到MongoDB部署
一旦安装了mongosh,只需在终端或命令提示符中输入mongosh即可启动。默认情况下,这将尝试连接到在本地主机上运行的默认端口27017上的MongoDB部署。要与远程MongoDB部署建立连接,您可以不带任何选项运行mongosh,或者如以下命令所示,使用带有所选主机和端口的连接字符串:
mongosh "mongodb://username:password@hostname:port/test"
一旦您通过mongosh连接到MongoDB部署,您应该在终端中看到MongoDB test> shell提示符,表明shell已连接到test数据库并准备执行命令。
使用mongosh成功连接到本地MongoDB部署的输出应该类似于您终端中的以下内容:
Packt Server $ mongoshCurrent Mongosh Log ID: 64c3fd54ca5106d524ea1c5cConnecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.0.0Using MongoDB: 7.0.0Using Mongosh: 2.0.0For mongosh info see: https://docs.mongodb.com/mongodb-shell/------test>
一旦您连接到localhost上的MongoDB部署,您将获得一个带有数据库名称的提示符,如前面的代码块所示。现在,您可以在MongoDB集群上执行命令,例如使用show dbs显示所有数据库,切换到特定数据库,或在您的数据库中从mongosh界面运行集合上的CRUD操作,如以下代码块所示:
test> show dbsadmin 132.00KiBconfig 36.00KiBcore 890.00KiBlocal 92.00KiBorg 80.00KiBtest> use orgorg> show collectionsclientsemployeesinfraaccountsorg> db.employees.find()[ { "_id": ObjectId("5f5b047b7e59b56c5878df4c"), "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com", "department": "HR", "salary": 60000 }, { "_id": ObjectId("5f5b04ac7e59b56c5878df4d"), "first_name": "Jane", "last_name": "Smith", "email": "janesmith@example.com", "department": "Engineering", "salary": 75000 }, { "_id": ObjectId("5f5b04c67e59b56c5878df4e"), "first_name": "Alice", "last_name": "Johnson", "email": "alicejohnson@example.com", "department": "Sales", "salary": 55000 }]
mongosh提供智能自动完成和建议,这可以帮助您更快地编写命令,并且减少错误。如果您想探索更多选项,可以运行帮助命令:
test> helpShell Help:use 设置当前数据库show 'show databases'/'show dbs': 打印所有数据库的列表 'show collections'/'show tables': 打印当前数据库的所有集合的列表。 'show profile': 打印 system.profile 信息 'show users': 打印当前数据库的所有用户的列表 'show roles': 打印当前数据库的所有角色的列表 'show log <type>': 打印当前连接的日志,如果未设置类型,则使用 'global' 'show logs': 打印所有日志exit 使用 exit/exit()/.exit 退出 MongoDB shellquit 使用 quit/quit() 退出 MongoDB shellMongo 创建一个新的连接并返回 Mongo 对象connect 创建一个新的连接并返回 Database 对象it 上次评估的行的结果;用于进一步迭代version Shell 版本load 将 JavaScript 文件加载并运行到当前 shell 环境中enableTelemetry 启用匿名使用数据的收集disableTelemetry 禁用匿名使用数据的收集passwordPrompt 提示用户输入密码sleep 休眠指定的毫秒数print 将对象的内容打印到输出printjson print() 的别名 convertShardKeyToHashed 返回输入的哈希值cls 像 console.clear() 一样清除屏幕isInteractive 返回 shell 是否将进入交互式模式
有关mongosh中可用帮助特性的概览,请参考MongoDB文档:MongoDB Shell Help。
在您的本地机器上安装mongosh的详细说明,请查看文档:Install MongoDB Shell。
mongosh与旧版shell的比较
mongosh比旧版shell(mongo)提供了许多优势,例如:
mongosh的关键特性
mongosh是数据库管理员和开发者的宝贵工具,提供实时反馈和广泛的功能,增强您的MongoDB体验。随着您对mongosh的熟悉,您会发现各种功能,使您能够更有效地与数据库和集合进行交互。mongosh中的一些最突出特性包括:
org> db.runCommand({ createUser: "mark", pwd: "test123", roles: [ { role: "dbOwner", db: "admin" } ]});{ ok: 1 }org>
mongosh> load("connect-and-insert.js")
您也可以在登录到mongosh之前,直接从命令行使用文件参数执行脚本文件:
mongosh --file loadMovies.js
您可以使用脚本执行来使用预定义的集合、文档和索引初始化数据库。您也可以加载脚本来执行计划任务或执行数据迁移操作。为复杂查询编写脚本有助于文档化并提高代码的可重用性,以便多次执行。
config.set( "editor", "vi" )
现在,您可以使用设置的编辑器进入编辑器。要使用内置编辑器,您可以使用.editor命令。按Ctrl + D退出并运行您的函数。
mongosh的使用案例
mongosh是一个现代的、用户友好的、功能丰富的交互式工具,非常适合以下用例场景:
使用mongosh的最佳实践
以下是使用mongosh工具的一些最佳实践:
MongoDB CLI
MongoDB CLI是一个现代的命令行界面工具,允许您从终端管理MongoDB服务。它用于在Atlas、Cloud Manager和Ops Manager中部署和管理MongoDB集群。
安装
您可以从官方网站安装MongoDB CLI:Download MongoDB CLI。
安装后,您可以使用它通过其用户友好的命令行界面与您的云部署进行交互,并远程管理Atlas、Cloud Manager和Ops Manager部署的集群。
配置
按照以下步骤配置并验证MongoDB CLI到您的集群:
mongocli config
这将为您的MongoDB CLI设置一个个人资料。系统会提示您提供公共或私有API密钥、要配置的Atlas集群的组织和项目。
注意
MongoDB CLI默认会将配置设置存储在~/.config/mongocli.toml。
使用MongoDB CLI
创建个人资料后,您可以通过运行命令来模拟Atlas GUI中看到的反应,从shell和脚本中访问Atlas集群并与它交互。例如,您可以使用以下命令列出配置集群数据库中的用户及其角色:
mongocli atlas dbusers list
然后,您应该启用从您的IP地址访问数据库。默认情况下,MongoDB Atlas数据库不对外开放连接,包括管理员IP。要更改此设置,您可以执行以下命令以启用当前IP连接:
mongocli atlas accessLists create --currentIp
输出应类似于以下内容:
{ "links": [ { "rel": "self", "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups" } ], "results": [ { "cidrBlock": "A.B.C.D/32", "comment": "My IP Address", "groupId": "620173c921b1ab3de3e8e610", "ipAddress": "A.B.C.D" } ], "totalCount": 1}
您可以创建、更新和删除允许连接到MongoDB Atlas的IP块,并将整个子网添加到其中。例如,格式为192.168.1.0的条目将允许来自任何以1.2.3开头的IP的客户端连接。除了使用MongoDB CLI作为连接到Atlas集群的接口外,您还可以使用它通过mongocli auth命令验证您的云部署。
mongocli auth
mongocli auth命令允许您管理命令行界面的认证状态。您可以使用auth命令来验证Atlas(mongocli auth login)或Cloud Manager(mongocli auth login --cm)。您可以使用mongocli logout从命令行界面注销。
注意
MongoDB CLI将接受相同命令的单数和复数命名。例如,accessList和accessLists都将调用相同的命令。
MongoDB CLI的关键特性
MongoDB CLI提供了一种方便的方式来管理和管理MongoDB部署,而无需GUI或编写大量脚本。MongoDB CLI的关键特性包括:
MongoDB CLI的使用案例
作为管理基于云的MongoDB解决方案的交互式工具,MongoDB CLI可以帮助您:
MongoDB CLI的最佳实践
以下是使用MongoDB CLI工具的一些最佳实践:
MongoDB Compass
MongoDB Compass是一个强大且直观的图形用户界面(GUI)工具,旨在简化MongoDB的数据库管理、查询构建和数据可视化。它通过提供MongoDB数据和集合的可视化表示,为用户提供了一个命令行界面的友好替代品。
安装
Compass可免费用于Windows、macOS、Red Hat和Ubuntu,可从以下地址下载执行文件:MongoDB Compass Download。
配置
要配置连接参数到本地或远程MongoDB集群,或者部署在MongoDB Atlas上,您应该提供连接字符串方案,可以作为URI提供,或通过在连接参数对话框中指定主机名、端口和认证细节。由于您要连接到本地MongoDB部署,选择mongodb作为连接字符串方案。要连接到Atlas部署,请使用mongodb+srv方案。
使用Compass直观探索数据
一旦连接到数据库,MongoDB Compass可以用来完成诸如将数据从CSV或JSON导入到您的MongoDB集群,或从易于导航的界面管理数据等任务。您可以编写临时查询来过滤数据,并在集合中探索趋势和共性。您还可以编写聚合管道,允许文档在集合中通过多个阶段被处理,以形成一组聚合结果。您也可以使用Compass中内置的MongoDB Shell,在交互式JavaScript环境中操作您的数据。
MongoDB Compass的关键特性
MongoDB Compass为MongoDB数据的查询、聚合和分析提供了多种功能,如:
MongoDB Compass的使用案例
凭借其交互式GUI和工具,MongoDB Compass使您能够:
MongoDB Compass的最佳实践
以下是使用MongoDB Compass的一些最佳实践:
MongoDB for VS Code
MongoDB为VS Code提供了一个扩展,让您可以直接在编码环境中使用MongoDB数据库。通过使用MongoDB for VS Code扩展,您可以利用VS Code的强大功能和可扩展性,同时无缝地使用MongoDB数据库。
安装
设置MongoDB for VS Code扩展遵循在VS Code或类似IDE工具上安装任何其他扩展的通用方法。要安装扩展,请按照以下步骤操作:
使用Playground探索数据
一旦安装了MongoDB for VS Code,您就可以在您的部署中查看数据并创建Playgrounds与您的数据交互。MongoDB Playgrounds是JavaScript环境,您可以在其中使用有用的语法高亮原型查询、聚合和MongoDB命令。您可以从Playgrounds面板、MongoDB for VS Code概览页面或Microsoft VS Code命令面板创建一个新的playground。
使用Terraform创建Atlas集群
如果您拥有一个组织中的Atlas账户和API密钥,并且已安装Terraform,您可以使用MongoDB for VS Code扩展中包含的Atlas模板来创建共享层级(Shared Tier)的Atlas集群。加载模板后,配置集群并提供Atlas账户的详细信息。现在,您可以使用Terraform命令来计划、应用或销毁您的Atlas集群。
关键特性
MongoDB for VS Code扩展在VS Code中转变了应用开发,提供以下重要特性:
MongoDB for VS Code扩展的使用案例
MongoDB for VS Code扩展是一个强大的工具,促进数据库交互、模式设计、查询执行等。使用MongoDB for VS Code扩展,您可以:
MongoDB for VS Code扩展的最佳实践
以下是使用MongoDB for VS Code扩展的一些最佳实践:
总结
在本章中,您探索了不同的MongoDB开发者工具,并学习了如何使用它们来提高您的生产力。本章介绍了MongoDB Shell—mongosh,这是一个命令行界面,作为直接通往MongoDB数据库的大门。之后,您了解了MongoDB CLI,这是一个命令行界面,用于连接基于云的MongoDB Atlas集群。
然后,您探索了强大的GUI工具MongoDB Compass,它提供了数据的直观和可视化表示。最后,您看了MongoDB for VS Code扩展。这个扩展为您提供了无缝的体验,结合了代码编辑器的能力和MongoDB开发的能力。在整个章节中,突出了每个工具的重要性以及它们的功能、用例和最佳实践。
在第4章“连接MongoDB”中,您将探索MongoDB的多语言方面。本章将指导您通过直接驱动程序方法、ODM库,以及MongoDB在Ruby、PHP、Python和Node.js中的集成。