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

การหาค่าที่ไม่ซ้ำกันภายในสองอาร์เรย์ในเอกสาร MongoDB เดียว


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