共用方式為

使用 MongoDB Shell 连接到 Azure Cosmos DB for MongoDB (vCore)

适用对象: MongoDB vCore

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

先决条件

  • 现有的 Azure Cosmos DB for MongoDB (vCore) 群集。

  • MongoDB Shell。 有关详细信息,请参阅 安装 MongoDB shell

  • 允许客户端连接到群集的防火墙规则。 有关详细信息,请参阅 配置防火墙

获取群集凭据

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

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

  2. 转到 Azure Cosmos DB for MongoDB (vCore) 集群。

  3. 选择 连接字符串 导航菜单选项。

  4. 复制或记录 连接字符串 字段中的值。

    群集页面上连接字符串选项的屏幕截图。

    重要

    门户中的连接字符串不包括密码值。 必须将占位符替换为 <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 Cosmos DB for MongoDB(vCore)是 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 Cosmos DB for MongoDB(vCore)是 Azure 原生平台即服务(PaaS)服务。

执行测试查询

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

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

    db.runCommand({connectionStatus: 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)