วิธีค้นหารายการที่ซ้ำกันใน mongodb


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อค้นหาเอกสารที่มีค่าซ้ำกันใน MongoDB:

 db.collection.aggregate([
    {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

นี่คือสิ่งที่ไวยากรณ์นี้ทำ:

  • จัดกลุ่ม เอกสารทั้งหมดที่มีค่าเดียวกันในช่อง 1
  • จับคู่ กลุ่มที่มีเอกสารมากกว่าหนึ่งฉบับ
  • ฉาย กลุ่มทั้งหมดที่มีมากกว่าหนึ่งเอกสาร

แบบสอบถามนี้ค้นหาค่าที่ซ้ำกันในคอลัมน์ field1 เพียงแก้ไขค่านี้เพื่อเปลี่ยนฟิลด์ที่จะค้นหา

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้กับ ทีม คอลเลกชันที่มีเอกสารต่อไปนี้:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

ตัวอย่าง: ค้นหาเอกสารที่มีค่าซ้ำกัน

เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาค่าที่ซ้ำกันทั้งหมดในคอลัมน์ “ทีม”:

 db.teams.aggregate([
    {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:

 { name: 'Rockets' }
{ name: 'Mavs' }

สิ่งนี้บอกเราว่าค่า “Rockets” และ “Mavs” ปรากฏหลายครั้งในช่อง “ทีม”

โปรดทราบว่าเราสามารถแทนที่ $team ด้วย $position เพื่อค้นหาค่าที่ซ้ำกันในช่อง “ตำแหน่ง” แทน:

 db.teams.aggregate([
    {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:

 { name: 'Guard' }

สิ่งนี้บอกเราว่า “Guard” ปรากฏขึ้นหลายครั้งในช่อง “ตำแหน่ง”

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีเพิ่มฟิลด์ใหม่ให้กับคอลเลกชัน
MongoDB: วิธีจัดกลุ่มตามและนับ
MongoDB: วิธีจัดกลุ่มตามหลายฟิลด์

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *