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

ค้นหาเอกสารที่ซ้ำกันทั้งหมดในคอลเล็กชัน MongoDB โดยคีย์ฟิลด์หรือไม่


ใช้กรอบงานรวมเพื่อค้นหาเอกสารที่ซ้ำกันทั้งหมดในคอลเล็กชัน MongoDB ตามช่องคีย์

เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

<ก่อนหน้า>> db.findDuplicateByKeyDemo.insertOne({"StudentId":1,"StudentName":"John"});{ "acknowledged" :true, "insertedId" :ObjectId("5c7f5b168d10a061296a3c3a")}> db.findDuplicate.findDuplicate insertOne({"StudentId":2,"StudentName":"Carol"});{ "acknowledged" :true, "insertedId" :ObjectId("5c7f5b1f8d10a061296a3c3b")}> db.findDuplicateByKeyDemo.indentId({"Stu" ,"StudentName":"Carol"});{ "acknowledged" :true, "insertedId" :ObjectId("5c7f5b248d10a061296a3c3c")}> db.findDuplicateByKeyDemo.insert":"One({"StudentId":4,"StudentName" });{ "รับทราบ" :จริง "insertedId" :ObjectId("5c7f5b2d8d10a061296a3c3d")}> db.findDuplicateByKeyDemo.insertOne({"StudentId":5,"StudentName":"Samledged});":รับทราบ จริง "insertedId" :ObjectId("5c7f5b398d10a061296a3c3e")}> db.findDuplicateByKeyDemo.insertOne({"StudentId":6,"StudentName":"Carol"});{ "รับทราบ":จริง" (ใน Object edIdId) "5c7f5b438d10a061296a3c3f")}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −

> db.findDuplicateByKeyDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{ "_id" :ObjectId("5c7f5b168d10a061296a3c3a"), "StudentId" :1, "StudentName" :"John"}{ "_id" :ObjectId("5c7f5b1f8d10a061296a3c3b"Name, "Student":Student :"Carol"}{ "_id" :ObjectId("5c7f5b248d10a061296a3c3c"), "StudentId" :3, "StudentName" :"Carol"}{ "_id" :ObjectId("5c7f5b2d8d10a061296a3c3dId") StudentName" :"John"}{ "_id" :ObjectId("5c7f5b398d10a061296a3c3e"), "StudentId" :5, "StudentName" :"Sam"}{ "_id" :ObjectId("5c7f5b438d10a061296"a3c3f" , "StudentName" :"แครอล"}

นี่คือแบบสอบถามเพื่อค้นหาเอกสารที่ซ้ำกันทั้งหมด” -

> db.findDuplicateByKeyDemo.aggregate([ ... { $group:{ ... _id:{ StudentName:"$StudentName" }, ... UIDS:{ $addToSet:"$_id" }, .. . ตัวนับ:{ $sum:1 } ... } } ... { $match:{ ... COUNTER:{ $gte:2 } ... } } ... { $sort :{ COUNTER :-1} }, ... { $limit :10 }... ]).pretty();

ต่อไปนี้เป็นผลลัพธ์ที่แสดงระเบียนที่ซ้ำกัน ที่นี่ นักเรียน "แครอล" มา 3 ครั้ง ขณะที่จอห์น 2 ครั้ง −

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>{ "_id" :{ "StudentName" :"Carol" }, "UIDS" :[ ObjectId("5c7f5b248d10a061296a3c3c"), ObjectId("5c7f5b438d10a061296a3c3f"), ObjectId("5c7f5b438d10a061296a3c3f"), ObjectId("12f96db] }{ "_id" :{ "StudentName" :"John" }, "UIDS" :[ ObjectId("5c7f5b2d8d10a061296a3c3d"), ObjectId("5c7f5b168d10a061296a3c3a") ], "COUNTER" :2}