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

วิธีลบข้อมูลซ้ำออกจากคอลเลกชัน MongoDB

การสร้างดัชนีแบบ Unique เพื่อป้องกันข้อมูลซ้ำ

เพื่อป้องกันไม่ให้มีการแทรกข้อมูลซ้ำ ให้ตั้งค่า unique: true พร้อมกับตัวเลือก dropDups: true ตามรูปแบบด้านล่าง:

db.yourCollectionName.ensureIndex({yourFieldName: 1}, {unique: true, dropDups: true})

ตัวอย่างการใช้งาน

สร้างคอลเลกชันพร้อมเอกสารทดสอบ การแทรกข้อมูลซ้ำจะถูกปฏิเสธ:

> db.demo604.ensureIndex({FirstName: 1}, {unique: true, dropDups: true});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo604.insertOne({FirstName:"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e960887ed011c280a0905d8") }
> db.demo604.insertOne({FirstName:"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e96088aed011c280a0905d9") }
> db.demo604.insertOne({FirstName:"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e96088ded011c280a0905da") }
> db.demo604.insertOne({FirstName:"Chris"});
2020-04-15T00:31:35.978+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo604 index: FirstName_1 dup key: { : "Chris" }

แสดงเอกสารทั้งหมดในคอลเลกชัน

ใช้เมธอด find() เพื่อดูข้อมูลที่เหลืออยู่:

> db.demo604.find();

ผลลัพธ์ที่ได้:

{ "_id" : ObjectId("5e960887ed011c280a0905d8"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e96088aed011c280a0905d9"), "FirstName" : "Bob" }
{ "_id" : ObjectId("5e96088ded011c280a0905da"), "FirstName" : "David" }