คุณสามารถใช้กรอบงานรวมเพื่อค้นหาระเบียนที่ซ้ำกันใน MongoDB เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
> db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"John"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a330293b406bd3df60e01") } > db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"John"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a330493b406bd3df60e02") } > db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Carol"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a330c93b406bd3df60e03") } > db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Sam"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a331093b406bd3df60e04") } > db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Carol"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a331593b406bd3df60e05") } > db.findDuplicateRecordsDemo.insertOne({"StudentFirstName":"Mike"}); { "acknowledged" : true, "insertedId" : ObjectId("5c8a331e93b406bd3df60e06") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −
> db.findDuplicateRecordsDemo.find();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" : ObjectId("5c8a330293b406bd3df60e01"), "StudentFirstName" : "John" } { "_id" : ObjectId("5c8a330493b406bd3df60e02"), "StudentFirstName" : "John" } { "_id" : ObjectId("5c8a330c93b406bd3df60e03"), "StudentFirstName" : "Carol" } { "_id" : ObjectId("5c8a331093b406bd3df60e04"), "StudentFirstName" : "Sam" } { "_id" : ObjectId("5c8a331593b406bd3df60e05"), "StudentFirstName" : "Carol" } { "_id" : ObjectId("5c8a331e93b406bd3df60e06"), "StudentFirstName" : "Mike" }
นี่คือแบบสอบถามเพื่อค้นหาระเบียนที่ซ้ำกันใน MongoDB -
> db.findDuplicateRecordsDemo.aggregate( ... {"$group" : { "_id": "$StudentFirstName", "count": { "$sum": 1 } } }, ... {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, ... {"$project": {"StudentFirstName" : "$_id", "_id" : 0} } ... );
ต่อไปนี้เป็นผลลัพธ์ที่แสดงเฉพาะระเบียนที่ซ้ำกัน -
{ "StudentFirstName" : "Carol" } { "StudentFirstName" : "John" }