MongoDB 中 deleteMany()和 Remove()的區別
deleteMany()
和 remove()
都用於從 MongoDB 中刪除條目。在最近的版本中,remove
被標記為已棄用。
相反,MongoDB 建議使用 deleteMany
和 deleteOne
。命令 deleteMany
可以在刪除之前接受要匹配的引數。
MongoDB 中 deleteMany()
的引數和返回
這個方法來自 mongosh。一般用於集合中刪除任何特定集合下的文件。
這是它的使用方法。
db.collection.deleteMany(
<FILTER>,{
writeConcern: <document>,
collation: <document>
}
)
<FILTER>
表示我們可以使用我們的自定義搜尋欄位。假設我們要刪除價格等於 30
的所有產品。
然後程式碼將是:
db.collection.deleteMany({
price:30
})
我們可以在這裡將其他引數留空。如果要刪除整個集合,請將 {}
插入 deleteMany
。
這裡有更多關於 writeConcern
和 collation
的資訊。
引數 | 型別 | 說明 |
---|---|---|
writeConcern |
文件 | 它是一個可選引數。它對文件進行確認。要了解有關 writeConcern 的更多資訊,請訪問此部落格。 |
collation |
文件 | 它允許使用者對文件使用特定於語言的規則。排序規則是一個可選引數。如果你使用它,你需要使用 local 欄位。這裡有更多關於 collation 。 |
如果函式使用 writeConcern
引數執行,deleteMany()
會將 acknowledged
返回為 true
;否則,假
。它還返回 deleteCount
,表示刪除了多少文件。
deleteMany
刪除所有匹配過濾器的文件。
示例退貨可能如下所示。
{ "acknowledged" : true, "deletedCount" : 9 }
MongoDB 中 remove()
的引數和返回
remove()
方法有兩個功能。它也可以充當 deleteMany
和 deleteOne
。
remove()
的模板程式碼在這裡。
db.collection.remove(
<query>,
<justOne>
)
一般使用這兩個引數。此外,你可以將其擴充套件到以下內容。
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
writeConcern
和 collation
與我們上面討論的 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 })
它也有 writeError
和 writeConcern
;這些與上面的 writeConcern
有關。
remove()
在更高版本的 MongoDB 中已被棄用。因此,在開發 NodeJS 應用程式時,你應該只使用 deleteOne
或 deleteMany
。
要了解有關 remove()
的更多資訊,請訪問以下網站。