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

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


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