高效刪除MongoDB所有條目?


如果您嘗試使用drop()方法,它將刪除集合的所有資訊。索引很快。但是,如果您使用remove()方法,它將刪除所有記錄,但保留集合和索引。

讓我們透過示例進行檢查。

使用drop()

讓我們首先建立一個包含文件的集合:

> db.dropWorkingDemo.createIndex({"FirstName":1});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

> db.dropWorkingDemo.insertOne({"FirstName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd8742bf3115999ed511e9")
}

以下是使用find()方法顯示集合中所有文件的查詢:

> db.dropWorkingDemo.find();

這將產生以下輸出:

{ "_id" : ObjectId("5cdd8742bf3115999ed511e9"), "FirstName" : "John" }

現在,我將使用drop():

> db.dropWorkingDemo.drop();

這將產生以下輸出:

True

讓我們檢查使用drop()方法後索引是否存在:

> db.dropWorkingDemo.getIndexes();

這將產生以下輸出:

[ ]

索引不存在。

使用remove()

我們現在將檢查remove()方法。讓我們首先建立一個包含文件的集合:

> db.removeDemo.createIndex({"FirstName":1});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}
> db.removeDemo.insertOne({"FirstName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd8868bf3115999ed511ea")
}

以下是使用find()方法顯示集合中所有文件的查詢:

> db.removeDemo.find();

這將產生以下輸出:

{ "_id" : ObjectId("5cdd8868bf3115999ed511ea"), "FirstName" : "John" }

讓我們使用remove():

> db.removeDemo.remove({});
WriteResult({ "nRemoved" : 1 })

使用remove()方法後,讓我們檢查索引是否存在:

> db.removeDemo.getIndexes();

這將產生以下輸出:

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.removeDemo"
   },
   {
      "v" : 2,
      "key" : {
         "FirstName" : 1
      },
      "name" : "FirstName_1",
      "ns" : "test.removeDemo"
   }
]

是的,索引存在。

更新於:2019年7月30日

193 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告