MongoDB 中的 CRUD 操作:示例教程

已發表: 2020-02-05

隨著網絡的不斷發展,我們現在看到了 MongoDB 和其他文檔對像數據庫如何成為傳統基於 SQL 的數據庫的替代品。 與 SQL 數據庫相比,這些文檔對像數據庫有幾個優勢,所有這些優勢中最突出的優勢包括可伸縮性和敏捷性。

需要注意的是,MongoDB 中的數據是以二進制編碼的 JSON (BSON) 文檔格式存儲的。 這種格式可能需要保存嵌入文檔的數組或為此值。 文檔在 MongoDB 中形成一條記錄,這是一個由值和字段對創建的結構。

現在讓我們討論 MongoDB 中的創建、更新、檢索和刪除操作或 CRUD 操作。 這些函數可以大致歸類為 MongoDB 中的數據修改函數。 這些只能用於單個集合。 Insert 是 MongoDB 中的一個函數,可用於向數據庫添加數據。

目錄

MongoDB 中的 CRUD 操作列表

1. 創建文檔

如何使用 MongoDB 創建對象? MongoDB 使用 BSON(JSON 的二進製表示)進行存儲。 因此,很容易理解用於在數據庫中執行不同操作的方法與 JavaScript 有關。 讓我們創建一個用戶和用戶的集合。 還需要注意的是,SQL 中的表等同於 MongoDB 中的集合。
db.users.save({name:”Mike”, job:”doctor”,email:”[email protected]”})
此示例使用 MongoDB save() 將數據保存到集合中。

2. 插入文件

  • 批量插入:此功能允許將文檔列表同時添加到數據庫中。 一個批次在特定時間點可能有數百甚至數千個文檔。 由於具有插入多個文檔的能力,此函數的工作速度比其他插入函數快得多。 批量插入不需要您對成百上千的文檔提出單獨的請求。 相反,它作為一個傳輸控制協議 (TCP) 請求工作。 由於不涉及標頭處理活動,因此插入期間花費的時間總是顯著減少。 每個必須插入的文檔都帶有一個標題,該標題將需要執行的操作傳達給數據庫。 大多數情況下,批量插入用於保存傳感器數據和服務器日誌。
  • Mongoimport :Mongoimport 是一個命令行工具,用於代替批量插入 MySQL、Oracle 或任何其他關係數據庫管理系統 (RDBMS) 的基本數據。 有時您可能需要在將文檔存儲到 MongoDB 之前對文檔進行更改(添加自定義 ID)。 您應該知道的另一件重要的事情是 MongoDB 只接受 16 MB 的消息。 因此,批量插入限制了它可以擁有的消息數量。
  • Unordered bulk insert :在這個函數中,MongoDB 寫入操作不遵循任何順序。 如果發生錯誤,它將繼續進行沒有任何中斷的寫入操作。 MongoDB 在執行時形成一組無序操作。 MongoDB 還可以通過在執行前重新排序列出的操作來尋求性能提升。 因此,在考慮使用此功能進行批量插入時,應用程序不必依賴序列。 Bulk.getOperations() 可用於查看 MongoDB 如何對一組操作進行分組,然後執行它們。 該命令可用於同時添加三個文檔,但沒有任何順序。
  • Ordered bulk insert:在這個函數中,MongoDB在寫操作時遵循一個順序。 任何寫入操作期間的錯誤會導致 MongoDB 不執行其他寫入操作。 有序操作根據它們的連續性和類型進行分組。 屬於同一類的相鄰有序操作被分組。

例如,如果一個有序列表有一個插入操作、一個刪除操作和兩個更新操作,MongoDB 將創建三個組來堆疊這些操作。 第一組將包含一個插入操作。 第二組將有一個刪除操作。 第三組將兩個更新操作放在一起。

預計 MongoDB 的未來版本將適當地處理此行為。 每組有序批量列表不能超過 1000 個操作。 如果數量超過該最大限制,MongoDB 將創建 1000 個或更少操作的較小組,以遵守此限制。 因此,如果有 7000 個有序批量操作,則將有 7 個組,每組由 1000 個批量操作組成。 要查看分組和執行是如何完成的,首先執行批量插入命令,然後使用 Bulk.getOperations 命令。 該命令可用於按順序添加三個文檔。

3. 檢索/閱讀文檔

MongoDB 中的每個查詢都針對特定的文檔。 MongoDB 根據查詢中定義的條件識別文檔,然後將這些文檔返回到其預期目的地。 文檔檢索查詢可以具有提及與需要返回的文檔字段匹配的條件或標準的投影。

可以修改查詢以放置跳過、限制和排序順序。

現在讓我們討論如何指定相等條件。 使用 findOne() 命令來識別文檔的第一條記錄。 要以正確的格式顯示結果,您可以使用 pretty 方法。

使用 db.items.find().pretty() 查詢來識別集合中列出的所有文檔並以標準化格式顯示所有文檔。 您可以使用空查詢來選擇所有文檔 - db.items.find( {} ) - 此查詢末尾有一個空查詢子句 - 因此它將識別集合中列出的所有文檔。

不使用查詢文檔指定 find 方法並使用空查詢都將提供相同的結果。 因此, db.items.find( {} ) 和 db.items.find() 查詢在它們用於的結果方面是等效的。

您可以操作查詢並使用查詢游標方法,而 count 方法可讓您找出集合中與您的查詢匹配的文檔數。 db.items.count()

4. 更新文件

您需要使用 update() 方法來更新 MongoDB 中的文檔。 update 方法有兩個重要的元素——查詢和更新。 查詢參數首先出現,然後是更新參數。 這是一個例子

db.users.update({name:”Mike”}, {age: 32})

但是,這不是更新值對的正確方法,在這種情況下是年齡。 這樣,您將覆蓋文檔中的所有內容。 唯一會留在這個時代的東西。 因此,當我們必須更新整個文檔中的單個值對時,我們需要使用幾個關鍵字。

db.users.update({name: “Mike”}, { $set: { age: 28}})

這不會覆蓋任何東西。 您將保留文檔中的所有信息。 只有年齡的值會被更新。

5. 刪除文件

使用 remove 方法 - db.courses.remove() - 從集合中刪除文檔。 此命令將從給定集合中刪除所有文檔。 它不會刪除的是索引和集合本身。 有時,remove 命令可以將查詢作為參數。 如果要刪除與查詢中提到的條件匹配的文檔,請使用 db.items.remove({“item”: “Pen”) 命令。

使用 db.items.remove({" item" : "Bag},1) 命令從集合中僅刪除一個文檔。 要刪除所有文檔、集合和索引,請使用 db.courses.drop() 命令(drop 方法)。

結論

如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。

從世界頂級大學在線學習軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

引領數據驅動的技術革命

超過 400 小時的學習時間。 14 種語言和工具。 IIIT-B 校友身份。
IIIT Bangalore 大數據高級證書課程