」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從 MongoDB 陣列中刪除物件?

如何從 MongoDB 陣列中刪除物件?

發佈於2024-11-19
瀏覽:769

How do I remove an object from an array in MongoDB?

MongoDB:從陣列中移除物件

在MongoDB 中,您可以使用$ 從嵌入在文件中的陣列中刪除物件拉操作員。如果您希望從陣列中刪除特定對象,則需要提供與確切對象匹配的查詢。

考慮以下文件:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name',
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

要從 items 陣列中刪除 id 為 23 的項目,請使用下列指令:

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);

此指令透過從陣列中刪除項目來更新文件。此查詢使用 _id 欄位指定文檔,$pull 運算子的目標是 items 陣列。在 $pull 操作中,您可以指定一個查詢來符合要刪除的物件。在本例中,我們將物件與id 進行配對: 23.

Mongoose/Node.js 實作

在Mongoose 中,您可以使用下列方法從陣列中刪除物件: pull() 方法:

const Model = mongoose.model('Model', new mongoose.Schema({
  items: [{
    id: Number,
    name: String
  }]
}));

Model.update(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }, // Update all matching documents
  (err, result) => { if (!err) console.log(result); }
);

此程式碼將從與指定 _id 相符的所有文件的 items 陣列中刪除 id 為 23 的項目。

最新教學 更多>
  • MySQL 中的貨幣值是否應該將 DOUBLE 轉換為 DECIMAL?
    MySQL 中的貨幣值是否應該將 DOUBLE 轉換為 DECIMAL?
    MySQL 中的DOUBLE 與DECIMAL:重新審視精度之爭在MySQL 資料庫中儲存貨幣值時應避免使用DOUBLE,這是一種常見的做法由於潛在的精度問題。然而,實際場景提出了關於此建議有效性的問題。 平衡精度問題與實際考慮給定的場景涉及一個遺留系統,其中有許多 DOUBLE 列,用於貨幣存儲。...
    程式設計 發佈於2024-11-19
  • 如何使用 CSS 過渡創建中心擴展 DIV?
    如何使用 CSS 過渡創建中心擴展 DIV?
    使用CSS 從中間擴展DIV在這個CSS 中間擴展問題中,我們的目標是將DIV 元素從中心向外轉換,實現與典型的從左上角展開的效果不同。利用CSS過渡,我們試圖控制擴展的寬度、高度和位置,以給人從中間開始增長的印象。 擴展的關鍵秘密在於操縱邊距屬性通過精確的公式。透過過渡邊距,我們可以指定圍繞 DI...
    程式設計 發佈於2024-11-19
  • 如何將資料分組到有意義的容器中以在 SQL 中進行直方圖視覺化?
    如何將資料分組到有意義的容器中以在 SQL 中進行直方圖視覺化?
    確定最佳直方圖箱大小在資料分析中,直方圖是直觀地表示資料分佈的重要工具。雖然可以使用腳本語言來產生直方圖,但這個過程可以直接在 SQL 中完成嗎?答案是肯定的,以下的問題將深入探討這個主題。 主要挑戰在於定義直方圖箱的大小。在大多數情況下,目標是將資料分組到預先定義的範圍中以獲得更豐富的資訊和更全面...
    程式設計 發佈於2024-11-19
  • Django 中的 Slug 是什麼以及為什麼要使用它們?
    Django 中的 Slug 是什麼以及為什麼要使用它們?
    揭開Django中「Slugs」的概念在廣闊的Django中,經常出現一種被稱為「slug」的神秘實體出現在模型中。它神秘的本質可能會讓您感到困惑,並提出一個問題:slug 到底是什麼? slug 的起源在於使用者友善的 URL 領域。想像網路上一篇文章的標題是「46 歲的處女」。要根據該標題建構一...
    程式設計 發佈於2024-11-19
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-11-19
  • 如何用Java播放WAV檔?
    如何用Java播放WAV檔?
    使用Java播放WAV檔案開發Java應用程式時,播放音訊檔案是一個常見的需求。本教學提供了播放 *.wav 檔案的全面解決方案,使您能夠將音效和音訊合併到 Java 程式中。 首先,建立一個類別來處理音訊播放。在下面的範例中,我們建立一個 MakeSound 類,其中包含播放音訊檔案的方法:pub...
    程式設計 發佈於2024-11-19
  • 為什麼 Java 中可以使用空物件參考來呼叫靜態方法?
    為什麼 Java 中可以使用空物件參考來呼叫靜態方法?
    使用空引用存取靜態方法在 Java 中,在空引用上呼叫方法通常會觸發 NullPointerException。然而,靜態方法的行為有所不同。 靜態方法與實例方法在 Java 中,方法可以是靜態的,也可以是實例的。靜態方法屬於類別本身,可以直接使用類別名稱調用,而實例方法與物件關聯,需要物件引用才能...
    程式設計 發佈於2024-11-19
  • 如何使用 g++ 建立和使用靜態函式庫?
    如何使用 g++ 建立和使用靜態函式庫?
    使用 g 建立並使用靜態函式庫 在軟體開發中,通常需要將可重複使用程式碼打包到稱為函式庫的模組化單元中。靜態函式庫是一種在編譯時與可執行檔連結的函式庫。本文將引導您完成使用 GNU 編譯器集合 g 建立和使用靜態函式庫的過程。 建立靜態函式庫建立靜態函式庫從header.cpp 和header.hp...
    程式設計 發佈於2024-11-19
  • 如何將 MySQL DATE 資料型別轉換為人類可讀的格式?
    如何將 MySQL DATE 資料型別轉換為人類可讀的格式?
    MySQL DATE 資料類型的格式轉換使用MySQL 時,在DATE 資料類型中儲存日期可能會導致意外值,例如“ 0000-00-00」。這種格式對於視覺化和資料處理來說可能會令人困惑。要解決這個問題,了解 MySQL 如何表示日期以及如何將它們轉換為所需的格式至關重要。 MySQL DATE 的...
    程式設計 發佈於2024-11-19
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-19
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-19
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-19
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內容...
    程式設計 發佈於2024-11-19
  • 為什麼 GCC 無法使用初始化清單初始化 std::array?
    為什麼 GCC 無法使用初始化清單初始化 std::array?
    初始化清單和std::array:GCC BugC 標準庫中的std::array 類別提供了一個固定的-大小數組容器。人們普遍認為此類支援初始化列表。 但是,使用GCC 4.6.1,嘗試使用以下語法初始化std::array 實例會失敗:std::array<std::string, 2&g...
    程式設計 發佈於2024-11-19
  • 為什麼實體框架精靈在整合 MySQL 時崩潰?
    為什麼實體框架精靈在整合 MySQL 時崩潰?
    Entity Framework 精靈在MySQL 資料庫整合中遇到錯誤Entity Framework (EF) 提供資料庫優先的建模功能,允許與各種SQL Server 和MySQL 等資料庫。但是,在針對 MySQL 資料庫更新模型時,使用者在 EF 精靈期間可能會遇到崩潰。 其中一個場景是當...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3