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

จะลบรายการที่ซ้ำกันด้วยสองคีย์ใน MongoDB ได้อย่างไร?


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

> db.demo108.insertOne({"Value1":23,"Value2":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ee3e49fd5fd66da214477")
}
> db.demo108.insertOne({"Value1":23,"Value2":25});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ee3f29fd5fd66da214478")
}
> db.demo108.insertOne({"Value1":23,"Value2":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ee3f59fd5fd66da214479")
}

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

> db.demo108.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5e2ee3e49fd5fd66da214477"), "Value1" : 23, "Value2" : 24 }
{ "_id" : ObjectId("5e2ee3f29fd5fd66da214478"), "Value1" : 23, "Value2" : 25 }
{ "_id" : ObjectId("5e2ee3f59fd5fd66da214479"), "Value1" : 23, "Value2" : 24 }

ต่อไปนี้เป็นแบบสอบถามเพื่อลบรายการที่ซ้ำกันโดยสองคีย์ใน MongoDB -

> db.demo108.aggregate([{ "$sort": { "_id": 1 } },
... {
...    "$group": {
...       "_id": { "Value1": "$Value1", "Value2": "$Value2" },
...       "doc": { "$first": "$$ROOT" }
...    }
... },
... { "$replaceRoot": { "newRoot": "$doc" } },
... { "$out": "demo108" }]);

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

> db.demo108.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5e2ee3f29fd5fd66da214478"), "Value1" : 23, "Value2" : 25 }
{ "_id" : ObjectId("5e2ee3e49fd5fd66da214477"), "Value1" : 23, "Value2" : 24 }