MongoDB 中 deleteOne() 和 findOneAndDelete() 操作之間的區別是什麼?


findOneAndDelete() 根據過濾器和排序條件刪除集合中的單一文件,同時返回已刪除的文件。

deleteOne() 從集合中刪除單一文件。

讓我們看一個示例並建立一個帶有文件的集合 -

> db.demo448.insertOne({"Name":"Chris","Age":21});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7a291cbbc41e36cc3caeca")
}
> db.demo448.insertOne({"Name":"David","Age":23});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7a2926bbc41e36cc3caecb")
}
> db.demo448.insertOne({"Name":"Bob","Age":22});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7a2930bbc41e36cc3caecc")
}

使用 find() 方法顯示集合中的所有文件 -

> db.demo448.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e7a291cbbc41e36cc3caeca"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e7a2926bbc41e36cc3caecb"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e7a2930bbc41e36cc3caecc"), "Name" : "Bob", "Age" : 22 }

以下是實現 deleteOne() 的查詢 -

> db.demo448.deleteOne({_id:ObjectId("5e7a2926bbc41e36cc3caecb")});

這將產生以下輸出 -

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

使用 find() 方法顯示集合中的所有文件 -

> db.demo448.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e7a291cbbc41e36cc3caeca"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e7a2930bbc41e36cc3caecc"), "Name" : "Bob", "Age" : 22 }

以下是實現 findOneAndDelete() 的查詢 -

> db.demo448.findOneAndDelete({"_id":ObjectId("5e7a2930bbc41e36cc3caecc")});

這將產生以下輸出 -

{ "_id" : ObjectId("5e7a2930bbc41e36cc3caecc"), "Name" : "Bob", "Age" : 22 }

使用 find() 方法顯示集合中的所有文件 -

> db.demo448.find();

這將產生以下輸出 -

{ "_id" : ObjectId("5e7a291cbbc41e36cc3caeca"), "Name" : "Chris", "Age" : 21 }

更新於:2020 年 5 月 11 日

2K+ 瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.