MongoDB Atlas 簡介
一、簡介
MongoDB 是一種流行的 NoSQL 資料庫,提供可擴充性、效能、高可用性並支援即時資料處理。
在這篇介紹文章中,我們將討論 MongoDB Atlas,這是一個由 MongoDB 提供的完全託管的資料庫即服務,具有多雲支援(AWS、GCP 和 Azure)。
2.什麼是MongoDB Atlas?
MongoDB Atlas 是一項基於雲端的服務,用於管理 MongoDB 資料庫的部署、監控、安全性和擴展。
MongoDB 提供的資料庫服務有效地隱藏了管理資料庫基礎架構的複雜性,並允許透過 MongoDB Shell、特定語言的 MongoDB 驅動程式和 MongoDB Atlas API 等各種方式與現代 Web/行動應用程式整合。
3.MongoDB Atlas UI
讓我們使用MongoDB Atlas 網站的直覺式 UI 來設定我們的第一個叢集。
3.1.建立一個帳戶
首先,讓我們註冊並建立一個帳戶:
登入後,我們可以查看儀表板來存取部署、服務和安全設定。
3.2.建立集群
接下來,我們可以使用儀表板上的Create
按鈕來建立叢集:
在建立新叢集時,MongoDB Atlas UI 允許我們根據不同的需求選擇伺服器類型,例如 M10、M5 和 M0。
此外,它還提供了雲端提供者、區域和安全性設定的選擇來部署叢集:
建立並部署BaeldungCluster
命名叢集後,我們可以檢查其詳細資訊並選擇新增資料、遷移或載入範例資料(這將建立sample_mflix
資料庫):
此外,我們還可以注意到右側的工具列部分,其中包含一些方便開發人員感興趣的範例。
載入範例資料後,我們可以在儀表板上查看**B** aeldungCluster
,其中包含一些方便的統計信息,例如過去六個小時內的讀寫操作、邏輯大小和連接:
此外,我們可以透過集合集可視化樣本資料:
在這裡,我們可以檢查**sample_mflix
資料庫包含comments
、 movies
和theatres
等集合**。此外,UI 還允許我們尋找、插入和聚合文件。
3.3.連接到集群
讓我們建立一個新的資料庫使用者來透過應用程式中的 MongoDB Shell 或 MongoDB 驅動程式連接到我們的BaeldungCluster
:
用戶準備好後,我們將在資料庫存取畫面上看到配置詳細資訊:
接下來,在儀表板上,按一下Connect
按鈕會顯示使用驅動程式、Compass 或 Shell 連接到BaeldungCluster
選項:
然後,我們回顧一下使用 MongoDB Shell 連接到BaeldungCluster
的步驟:
同樣,我們也可以透過選擇連接到BaeldungCluster
的 Java 驅動程式來取得 Java 應用程式的連接字串:
同樣,如果需要,我們可以探索 Compass 和 Atlas SQL 等其他方式來連接到我們的叢集。
3.4.查詢數據
MongoDB Atlas UI 允許我們透過 Atlas 搜尋查詢數據,提供各種選項,如 Atlas Vector Search、Autocomplete 和 Rich Query DSL:
首先,讓我們為BaeldungCluster
建立一個搜尋索引並選擇「視覺化編輯器」選項:
接下來,我們可以將索引命名為 - baeldungindex
並選擇sample_mflix
資料庫,這是我們的BaeldungCluster
上載入的範例資料:
此外,UI 還允許我們在下一步中完善預設索引配置:
一旦名為搜尋索引的baeldungindex
準備就緒,我們就可以使用它來搜尋資料:
在這裡, Search Tester
對話方塊允許我們輸入任何文字作為通配符搜尋。
4. 使用 MongoDB Shell 進行基本操作
讓我們使用 MongoDB Shell 連接叢集並執行一些命令來查看它們的運行情況。
4.1.連接集群
首先,讓我們按照上面顯示的說明安裝 MongoDB Shell。
安裝後,我們可以使用 MongoDB Shell 連接我們的BaeldungCluster
:
mongosh "mongodb+srv://baeldungcluster.oyixi.mongodb.net/" --apiVersion 1 --username baeldungadmin
建立連線時, mongosh
指令會詢問使用者名稱baeldungadmin.
然後,MongoDB Shell 建立連接並記錄詳細資訊:
Enter password: ********************
Current Mongosh Log ID:
66cb11d7d082639cbff99270
Connecting to:
mongodb+srv://<credentials>@baeldungcluster.oyixi.mongodb.net/?appName=mongosh+2.2.15
Using MongoDB:
7.0.12 (API Version 1)
Using Mongosh:
2.2.15
mongosh 2.3.0 is available for download: https://www.mongodb.com/try/download/shell
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
Atlas atlas-2e83ir-shard-0 [primary] test>
在這裡,我們還可以看到叢集名稱及其節點類型(主要)。
4.2.尋找文檔
首先,我們依照use
指令選擇sample_mflix
資料庫:
use sample_mflix;
接下來,我們可以使用以下命令來顯示所有集合:
show collections;
最後,我們可以使用find
命令來查看comments
集合中的所有文件:
db.comments.find();
我們將在命令列中看到以下結果:
[{
_id: ObjectId('5a9427648b0beebeb69581b9'),
name: 'Sandor Clegane',
email: '[email protected]',
movie_id: ObjectId('573a1392f29313caabcdbceb'),
text: 'Totam facilis ad amet a sunt aut quia.',
date: ISODate('2010-01-11T08:07:56.000Z')
},
{
_id: ObjectId('5a9427648b0beebeb69581cf'),
name: 'Catelyn Stark',
email: '[email protected]',
movie_id: ObjectId('573a1392f29313caabcdbd59'),
text: 'Explicabo voluptatum soluta sed optio ea.',
date: ISODate('1983-12-23T05:39:52.000Z')
},
...
]
此外,我們可以觀察到結果已經以可讀的 JSON 格式呈現。
4.3.新增文件
接下來,讓我們使用insertOne
命令將文件新增到comments
集合中:
db.comments.insertOne({
"name": "Anshul Bansal",
"movie": "Matrix",
"text": "nice sci-fi movie"
})
然後,將返回以下確認:
{
acknowledged: true,
insertedId: ObjectId('66cb372ad082639cbff99271')
}
請注意新文件自動產生的ObjectId
。
4.4.使用搜尋索引
同樣,我們可以使用aggregate
指令使用先前建立的baeldungindex
來搜尋集合:
db.comments.aggregate([
{
$search: {
index: "baeldungindex",
text: {
query: "Anshul Bansal",
path: {
wildcard: "*"
}
}
}
}
])
這是上述命令的輸出:
[
{
_id: ObjectId('66cb372ad082639cbff99271'),
name: 'Anshul Bansal',
movie: 'Matrix',
text: 'nice sci-fi movie'
}
]
我們可以確認傳回文件的ObjectId
與上一個步驟中建立的ObjectId完全匹配。
5.MongoDB Atlas CLI
MongoDB Atlas 還提供專用的命令列介面,用於透過其直覺的命令與資料庫服務進行互動。
讓我們檢查一下設定和一些方便的命令。
5.1.設定
首先,與 MongoDB Shell 類似,我們需要安裝 MongoDB Atlas CLI:
brew install mongodb-atlas
安裝後,我們可以透過使用atlas
關鍵字啟動命令來使用 Atlas CLI:
atlas --version
此處,該命令返回已安裝的 Atlas CLI 版本1.26.0
。
5.2.登入
然後,我們可以使用Atlas CLI登入:
atlas auth login
這將打開瀏覽器窗口,讓我們使用使用者名稱和密碼登入。
並且,它還記錄了進入啟動畫面所需的一次性驗證碼:
To verify your account, copy your one-time verification code:
7QGP-TQXH
Paste the code in the browser when prompted to activate your Atlas CLI. Your code will expire after 10 minutes.
To continue, go to https://account.mongodb.com/account/connect
授權後,我們可以運行一些命令來確認存取。
5.3.列出項目、使用者和集群
例如,讓我們檢查項目清單:
atlas projects list
ID NAME
66b9bcede5fc6d307bbc8e48 Baeldung
同樣,我們可以查看資料庫使用者列表:
atlas dbusers list
USERNAME DATABASE
baeldungadmin admin
請注意,該命令會傳回我們在上一個步驟中建立的資料庫使用者baeldungadmin
。
同樣,讓我們透過 MongoDB Atlas CLI 命令檢查叢集:
atlas clusters list
ID NAME MDB VER STATE
66ca41392ed10b3dd115e87f BaeldungCluster 7.0.12 IDLE
在這裡,我們可以看到BaeldungCluster
命名群集的ID
、 Version
和State
。
5.4.建立集群
接下來,我們使用 Atlas CLI 建立叢集:
atlas clusters create baeldungatlascluster --provider AWS --region EU_CENTRAL_1
在這裡,我們提供了叢集的名稱、雲端提供者和區域。
6. MongoDB Atlas API
MongoDB Atlas透過其精心設計的 API 集提供程式存取來管理部署、叢集和資料。
讓我們熟悉一下設定和一些方便的 API。
6.1.建立 API 金鑰
首先,我們需要建立一個 API 金鑰,該金鑰具有透過 MongoDB Atlas API 進行程式設計存取所需的權限:
建立 API 金鑰後,UI 只會向我們顯示一次私鑰。我們應該安全地儲存它,因為 API 存取需要它。
我們也可以在組織存取管理器畫面上找到公鑰。
6.2.列出組
讓我們使用 MongoDB Atlas API 來取得 MongoDB Atlas 帳戶上所有群組的清單:
curl --user "<publickey>:<privatekey>" --digest \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2023-02-01+json" \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups?pretty=true"
在這裡,我們應該填寫上一個步驟中儲存的publicKey
和privateKey
的值。
上述命令的 JSON 回應如下所示:
{
"links": [
{
"href": "https://cloud.mongodb.com/api/atlas/v2/groups?pageNum=1&itemsPerPage=100",
"rel": "self"
}
],
"results": [
{
"clusterCount": 1,
"created": "2024-08-12T07:42:46Z",
"id": "66b9bcede5fc6d307bbc8e48",
"links": [
{
"href": "https://cloud.mongodb.com/api/atlas/v2/groups/66b9bcede5fc6d307bbc8e48",
"rel": "self"
}
],
"name": "Baeldung",
"orgId": "66b9bcede5fc6d307bbc8dc5",
"tags": []
}
],
"totalCount": 1
}
在這裡,我們應該複製組/項目的 ID 以列出Baeldung
組下的所有群集。
6.3.列出集群
因此,讓我們使用以下 cURL 命令來取得 MongoDB Atlas 帳戶上所有叢集的清單:
curl --user "<publickey>:<privatekey>" --digest \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2023-02-01+json" \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/66b9bcede5fc6d307bbc8e48/clusters?pretty=true"
然後,我們可以查看上述命令的詳細回應:
{
"links": [
{
"href": "https://cloud.mongodb.com/api/atlas/v2/groups/66b9bcede5fc6d307bbc8e48/clusters?pageNum=1&itemsPerPage=100",
"rel": "self"
}
],
"results": [
{
"backupEnabled": false,
"biConnector": {
"enabled": false,
"readPreference": "secondary"
},
"clusterType": "REPLICASET",
"connectionStrings": {
"standard": "mongodb://baeldungcluster-shard-00-00.oyixi.mongodb.net:27017,baeldungcluster-shard-00-01.oyixi.mongodb.net:27017,baeldungcluster-shard-00-02.oyixi.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-2e83ir-shard-0",
"standardSrv": "mongodb+srv://baeldungcluster.oyixi.mongodb.net"
},
"createDate": "2024-08-24T20:23:21Z",
"diskSizeGB": 0.5,
"diskWarmingMode": "FULLY_WARMED",
"encryptionAtRestProvider": "NONE",
"globalClusterSelfManagedSharding": false,
"groupId": "66b9bcede5fc6d307bbc8e48",
"id": "66ca41392ed10b3dd115e87f",
"labels": [],
"mongoDBMajorVersion": "7.0",
"mongoDBVersion": "7.0.12",
"name": "BaeldungCluster",
"paused": false,
"pitEnabled": false,
"replicationSpecs": [
{
"id": "66ca41392ed10b3dd115e83d",
"numShards": 1,
"regionConfigs": [
{
"electableSpecs": {
"instanceSize": "M0"
},
"backingProviderName": "AWS",
"priority": 7,
"providerName": "TENANT",
"regionName": "EU_CENTRAL_1"
}
],
"zoneId": "66ca41392ed10b3dd115e84f",
"zoneName": "Zone 1"
}
],
"rootCertType": "ISRGROOTX1",
"stateName": "IDLE",
"tags": [],
"terminationProtectionEnabled": false,
"versionReleaseSystem": "LTS"
}
],
"totalCount": 1
}
我們可以注意到叢集的各種細節,例如connectionStrings
、 id
和replicationSpecs
。
6.4.列表索引
同樣,我們可以存取BaeldungCluster
上所有可用索引的清單:
curl --user "<publickey>:<privatekey>" --digest \
--header "Content-Type: application/vnd.atlas.2024-05-30+json" \
--header "Accept: application/vnd.atlas.2024-05-30+json" \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/66b9bcede5fc6d307bbc8e48/clusters/BaeldungCluster/search/indexes?pretty=true"
因此,JSON 回應將提及在前面的步驟中創建的baeldungindex
:
[ {
"collectionName" : "comments",
"database" : "sample_mflix",
"indexID" : "66cb362f60a4c668404a1372",
"latestDefinition" : {
"mappings" : {
"dynamic" : true
}
},
"latestDefinitionVersion" : {
"createdAt" : "2024-08-25T13:48:31Z",
"version" : 0
},
"name" : "baeldungindex",
"queryable" : true,
"status" : "READY",
"statusDetail" : [ {
"hostname" : "atlas-2e83ir-shard-00-00",
"mainIndex" : {
"definition" : {
"mappings" : {
"dynamic" : true,
"fields" : { }
}
},
"definitionVersion" : {
"createdAt" : "2024-08-25T13:48:31Z",
"version" : 0
},
"queryable" : true,
"status" : "READY"
},
"queryable" : true,
"status" : "READY"
}, {
"hostname" : "atlas-2e83ir-shard-00-02",
"mainIndex" : {
"definition" : {
"mappings" : {
"dynamic" : true,
"fields" : { }
}
},
"definitionVersion" : {
"createdAt" : "2024-08-25T13:48:31Z",
"version" : 0
},
"queryable" : true,
"status" : "READY"
},
"queryable" : true,
"status" : "READY"
}, {
"hostname" : "atlas-2e83ir-shard-00-01",
"mainIndex" : {
"definition" : {
"mappings" : {
"dynamic" : true,
"fields" : { }
}
},
"definitionVersion" : {
"createdAt" : "2024-08-25T13:48:31Z",
"version" : 0
},
"queryable" : true,
"status" : "READY"
},
"queryable" : true,
"status" : "READY"
} ]
} ]
此外,除了其他細節之外,我們還可以觀察各個主機上索引的狀態。
七、結論
在本教程中,我們討論了 MongoDB Atlas,一種雲端託管的 MongoDB 服務。
我們首先概述了使用 UI 建立、部署和存取叢集的步驟。接下來,我們探索了 MongoDB Shell 的基本操作。
最後,我們檢查了用於與資料庫服務互動的 MongoDB Atlas CLI 和 API。