หากลองใช้เมธอด drop() จะลบข้อมูลคอลเลกชันทั้งหมดรวมถึงดัชนี (indexes) ในขณะที่ 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") }
แสดงข้อมูล:
> 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") }
แสดงข้อมูล:
> 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"
}
]
ดัชนียังคงอยู่ - นี่คือความแตกต่างสำคัญระหว่าง drop() และ remove()