ในการรับค่าที่ไม่ซ้ำภายในสองอาร์เรย์ในเอกสาร ให้ใช้ $setUnion in aggregate() $setUnion รับอาร์เรย์ตั้งแต่สองอาร์เรย์ขึ้นไปและส่งคืนอาร์เรย์ที่มีองค์ประกอบที่ปรากฏในอาร์เรย์อินพุตใดๆ
ให้เราสร้างคอลเลกชันที่มีเอกสาร -
>db.demo608.insertOne({"ListOfName1":["John","Chris","Bob","David"],"ListOfName2":["Bob", "Sam","John","Robert","Chris"]} ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e974542f57d0dc0b182d62b") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo608.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e974542f57d0dc0b182d62b"), "ListOfName1" : [ "John", "Chris", "Bob", "David" ], "ListOfName2" : [ "Bob", "Sam", "John", "Robert", "Chris" ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อรับค่าที่ไม่ซ้ำกันภายในสองอาร์เรย์ในเอกสาร MongoDB เดียว -
> db.demo608.aggregate([ ... {$project:{SetOfNames:{$setUnion:['$ListOfName1','$ListOfName2']}}} ... ]).pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e974542f57d0dc0b182d62b"), "SetOfNames" : [ "Bob", "Chris", "David", "John", "Robert", "Sam" ] }