使用 mongosh 連線

瞭解如何建立與 MongoDB 相容的 Firestore 資料庫,並使用 mongosh 工具連線至該資料庫。

事前準備

  1. 前往 Google Cloud 控制台的專案選擇器頁面。

    前往專案選取器

  2. 選取或建立 Google Cloud 專案。

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
    • 建立專案:如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色
  3. 確認專案已啟用計費功能 Google Cloud

  4. 確認您在專案中具備下列角色: Cloud Datastore 擁有者

    檢查角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「IAM」頁面
    2. 選取專案。
    3. 在「主體」欄中,找出所有識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。

    4. 針對指定或包含您的所有列,請檢查「角色」欄,確認角色清單是否包含必要角色。

    授予角色

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「IAM」頁面
    2. 選取專案。
    3. 按一下「Grant access」(授予存取權)
    4. 在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是指 Google 帳戶的電子郵件地址。

    5. 按一下「選取角色」,然後搜尋角色。
    6. 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
    7. 按一下「Save」(儲存)
  5. 安裝 mongosh 工具

建立與 MongoDB 相容的 Firestore 資料庫,並擷取連線字串

在 Google Cloud 控制台中,建立新的 Firestore Enterprise 版資料庫。如要使用與 MongoDB 相容的 Firestore,必須使用 Firestore Enterprise 版:

  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 點選「建立 Firestore 資料庫」
  3. 輸入資料庫 ID。
  4. 選取 Enterprise 版本。
  5. 選取資料庫位置。
  6. 按一下 [Create Database] (建立資料庫)。

    資料庫完成初始化後,控制台會開啟資料庫的 Firestore Studio

  7. 在「使用外部 MongoDB 工具連結至 Firestore」部分,複製連線字串。

連線字串取決於資料庫的 UID (系統產生) 和資料庫位置:

UID.LOCATION.firestore.goog

建立 SCRAM 驗證的使用者

在 Google Cloud 控制台中,建立新的資料庫使用者,並指派使用者身分與存取權管理權限。

  1. 前往 Google Cloud 控制台的「Databases」(資料庫) 頁面。

    前往「資料庫」

  2. 從資料庫清單中選取資料庫。
  3. 按一下導覽選單中的「Security」(安全性)
  4. 點選「Add User」
  5. 輸入使用者名稱。
  6. 為使用者選取 Identity and Access Management 角色。
  7. 按一下「建立」。資料庫會建立使用者,並顯示系統產生的密碼。複製並儲存這組密碼。您之後將無法再取得這組密碼

使用 mongosh 連線

使用連線字串、使用者名稱和密碼連線至資料庫,並在本機執行 mongosh,設定選項如下。

mongosh 'mongodb://USERNAME:PASSWORD@CONNECTION_STRING:443/DATABASE_ID?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false'

更改下列內容:

  • USERNAME:您建立的資料庫使用者名稱。
  • PASSWORD:為您建立的資料庫使用者產生的密碼。
  • CONNECTION_STRING:資料庫連線字串。
  • DATABASE_ID:資料庫 ID

連線後,您就可以建立及讀取資料,例如:

db.pages.insertOne({ message: "Hello World!"})
db.pages.find({})
exit

後續步驟