เพื่อหาค่าที่ไม่ซ้ำกันภายในสองอาร์เรย์ในเอกสาร ให้ใช้ $setUnion ใน 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" ] }