ดึงเฉพาะค่าของฟิลด์เป็นอาร์เรย์ด้วย map()
บทความนี้สาธิตวิธีการส่งคืนรายการค่าเฉพาะ (List of specific values) จากผลลัพธ์คิวรี่ MongoDB โดยใช้เมธอด map() บน Cursor
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
สร้าง collection ชื่อ demo195 และเพิ่มเอกสาร 3 รายการ ที่มีฟิลด์ Subject
> db.demo195.insertOne({"Subject":"MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e3af3f203d395bdc21346d4") }
> db.demo195.insertOne({"Subject":"MongoDB"});
{ "acknowledged": true, "insertedId": ObjectId("5e3af3f703d395bdc21346d5") }
> db.demo195.insertOne({"Subject":"Java"});
{ "acknowledged": true, "insertedId": ObjectId("5e3af3fa03d395bdc21346d6") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด
> db.demo195.find();
ผลลัพธ์:
{ "_id": ObjectId("5e3af3f203d395bdc21346d4"), "Subject": "MySQL" }
{ "_id": ObjectId("5e3af3f703d395bdc21346d5"), "Subject": "MongoDB" }
{ "_id": ObjectId("5e3af3fa03d395bdc21346d6"), "Subject": "Java" }
ขั้นตอนที่ 3: ใช้ map() เพื่อดึงเฉพาะค่า Subject
map() จะวนลูปผ่าน Cursor และส่งคืนอาร์เรย์ของค่าที่ฟังก์ชัน callback ส่งคืน
> db.demo195.find().map(function(doc){ return doc.Subject });
ผลลัพธ์ที่ได้
[ "MySQL", "MongoDB", "Java" ]
สรุป: map() เป็นวิธีง่ายและรวดเร็วในการแปลง Cursor ให้เป็นอาร์เรย์ของค่าเฉพาะฟิลด์ที่ต้องการ โดยไม่ต้องดึงเอกสารทั้งหมดมาแล้วค่อยวนลูปฝั่งแอปพลิเคชัน