Mongodb: วิธีนับค่าที่แตกต่างกันในฟิลด์


คุณสามารถใช้วิธีการต่อไปนี้เพื่อนับค่าที่แตกต่างกันในช่องเฉพาะใน MongoDB:

วิธีที่ 1: ค้นหารายการค่าที่แตกต่างกัน

 db.collection.distinct( 'field_name' )

วิธีที่ 2: ค้นหาจำนวนค่าที่แตกต่างกัน

 db.collection.distinct( 'field_name' ).length

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

 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 })

ตัวอย่างที่ 1: ค้นหารายการค่าที่แตกต่างกัน

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

 db.teams.distinct( 'team' )

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

 ['Cavs', 'Mavs', 'Rockets']

ผลลัพธ์จะแสดงชื่อทีมที่แตกต่างกันสามชื่อในเอกสารทั้งหมด

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

 db.teams.distinct( 'position' )

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

 ['Center', 'Forward', 'Guard']

หมายเหตุ : MongoDB เรียงลำดับค่าที่แตกต่างกันตามตัวอักษรตามค่าเริ่มต้น

ตัวอย่างที่ 2: ค้นหาจำนวนค่าที่ไม่ซ้ำ

เราสามารถใช้โค้ดต่อไปนี้เพื่อนับจำนวนค่าที่แตกต่างกันในช่อง “ทีม”:

 db.teams.distinct( 'team' ).length

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

 3

สิ่งนี้บอกเราว่ามีค่าที่แตกต่างกัน 3 ค่าในช่อง “ทีม”

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

 db.teams.distinct( 'points' ).length

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

 5

สิ่งนี้บอกเราว่ามีค่าที่แตกต่างกัน 5 ค่าในช่อง “คะแนน”

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน แยกต่างหากได้ ที่นี่

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

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

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

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

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