Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีที่มีประสิทธิภาพในการลบรายการทั้งหมดออกจาก 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()

ตอนนี้เราจะตรวจสอบวิธีการลบ () ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> 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"
   }
]

ใช่ ดัชนีมีอยู่