MongoDB 中 deleteMany()和 Remove()的區別

Shihab Sikder 2023年1月30日 2022年7月18日
  1. MongoDB 中 deleteMany() 的引數和返回
  2. MongoDB 中 remove() 的引數和返回
MongoDB 中 deleteMany()和 Remove()的區別

deleteMany()remove() 都用於從 MongoDB 中刪除條目。在最近的版本中,remove 被標記為已棄用。

相反,MongoDB 建議使用 deleteManydeleteOne。命令 deleteMany 可以在刪除之前接受要匹配的引數。

MongoDB 中 deleteMany() 的引數和返回

這個方法來自 mongosh。一般用於集合中刪除任何特定集合下的文件。

這是它的使用方法。

db.collection.deleteMany(
    <FILTER>,{
        writeConcern: <document>,
        collation: <document>
    }
)

<FILTER> 表示我們可以使用我們的自定義搜尋欄位。假設我們要刪除價格等於 30 的所有產品。

然後程式碼將是:

db.collection.deleteMany({
    price:30
})

我們可以在這裡將其他引數留空。如果要刪除整個集合,請將 {} 插入 deleteMany

這裡有更多關於 writeConcerncollation 的資訊。

引數 型別 說明
writeConcern 文件 它是一個可選引數。它對文件進行確認。要了解有關 writeConcern 的更多資訊,請訪問此部落格
collation 文件 它允許使用者對文件使用特定於語言的規則。排序規則是一個可選引數。如果你使用它,你需要使用 local 欄位。這裡有更多關於 collation

如果函式使用 writeConcern 引數執行,deleteMany() 會將 acknowledged 返回為 true;否則,。它還返回 deleteCount,表示刪除了多少文件。

deleteMany 刪除所有匹配過濾器的文件。

示例退貨可能如下所示。

{ "acknowledged" : true, "deletedCount" : 9 }

MongoDB 中 remove() 的引數和返回

remove() 方法有兩個功能。它也可以充當 deleteManydeleteOne

remove() 的模板程式碼在這裡。

db.collection.remove(
   <query>,
   <justOne>
)

一般使用這兩個引數。此外,你可以將其擴充套件到以下內容。

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)

writeConcerncollation 與我們上面討論的 deleteMany() 相同。在這裡,我們可以使用 query 代替過濾器。

要了解有關 MongoDB 中的 query 的更多資訊,你可以訪問以下 link

如果我們在 remove 方法中傳遞一個空物件,它將從集合中刪除所有文件。例如,假設你有一個 product 集合,並且想要刪除價格低於 5 的所有產品。

然後命令將是:

db.products.remove(
    {price:{ $lt: 5}}
)

如果我們輸入這個命令,justOne 引數將預設為 false。現在,如果你只想刪除同一查詢的一個元素,命令將如下所示。

db.products.remove(
    {price:{ $lt: 5}}, true
)

此方法返回一個名為 WriteResult 的物件,該物件具有以下引數。

WriteResult({ "nRemoved" : 10 })

它也有 writeErrorwriteConcern;這些與上面的 writeConcern 有關。

remove() 在更高版本的 MongoDB 中已被棄用。因此,在開發 NodeJS 應用程式時,你應該只使用 deleteOnedeleteMany

要了解有關 remove() 的更多資訊,請訪問以下網站

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

相關文章 - MongoDB Delete