你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 MongoDB Shell 连接到 Azure DocumentDB

MongoDB Shell (mongosh) 是用于与 MongoDB 部署进行交互的 JavaScript 和 Node.js 环境。 它是一种常用的社区工具,用于测试查询并与 Azure DocumentDB 群集中的数据进行交互。 本文介绍如何使用 MongoDB Shell 连接到 Azure DocumentDB 群集。

先决条件

  • 现有的 Azure DocumentDB 群集

获取群集凭据

获取连接到此群集所需的连接字符串。

  1. 登录到 Azure 门户https://portal.azure.com)。

  2. 导航到现有的 Azure DocumentDB 群集。

获取用于连接到群集的凭据。

  1. 在群集页上,在资源菜单中选择 “连接字符串 ”选项。

  2. “连接字符串 ”部分中,复制或记录 “连接字符串 ”字段中的值。

显示连接字符串选项的屏幕截图。

重要

门户中的连接字符串不包括密码值。 必须将 <password> 占位符替换为创建群集时输入的凭据或以交互方式输入密码。

使用交互式密码身份验证进行连接

使用 MongoDB Shell,通过不包含密码的连接字符串连接到群集。 使用交互式密码提示输入密码作为连接步骤的一部分。

  1. 打开终端。

  2. 通过在 MongoDB Shell 提示符中输入密码进行连接。 对于此步骤,请使用没有密码的连接字符串。

    mongosh "mongodb+srv://<username>@<cluster-name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
    
  3. 提供密码并成功进行身份验证后,请观察显示的警告

    This server or service appears to be an emulation of MongoDB.
    

    小窍门

    可以放心地忽略此警告。 之所以生成此警告,是因为连接字符串包含 cosmos.azure。 Azure DocumentDB 是 Azure 平台的 PaaS 原生产品。

  4. 退出 Shell 环境。

使用连接字符串和密码进行连接

现在,使用包含密码的连接字符串和参数从 MongoDB Shell 连接到群集。

  1. 使用连接字符串以及--username--password参数进行连接。

    mongosh "mongodb+srv://<cluster-name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000" --username "<username>" -password "<password>"
    
  2. 提供密码并成功进行身份验证后,请观察出现的警告。

    ------
       Warning: Non-Genuine MongoDB Detected
       This server or service appears to be an emulation of MongoDB rather than an official MongoDB product.
    ------
    

    小窍门

    可以放心地忽略此警告。 之所以生成此警告,是因为连接字符串包含 cosmos.azure。 Azure DocumentDB 是 Azure 平台的 PaaS 原生产品。

执行测试查询

通过执行一系列测试命令和查询来验证是否已成功连接到群集。

  1. 通过运行 connectionStatus 命令检查连接状态。

    db.runCommand({connectionStatus: 1})
    
    {
      ...
      ok: 1
    }
    
  2. 列出群集中的数据库。

    show dbs
    
  3. 切换到特定数据库。 将 <database-name> 占位符替换为群集中任何数据库的名称。

    use <database-name>
    

    小窍门

    例如,如果数据库名称为 inventory,则命令为 use inventory

  4. 列出数据库中的集合。

    show collections
    
  5. 查找特定集合中的前五项。 将 <collection-name> 占位符替换为群集中任何集合的名称。

    db.<collection-name>.find().limit(5)
    

    小窍门

    例如,如果集合名称为 equipment,则命令为 db.equipment.find().limit(5)