เมื่อต้องการดึงเฉพาะบางส่วนของอาร์เรย์ (array slicing) ให้ใช้โอเปอเรเตอร์ $slice ในการ projection ของ find()
> db.demo503.insertOne({_id: 1, Name: "John", Subject: ["MySQL", "Java", "C"]});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo503.insertOne({_id: 2, Name: "David", Subject: ["MongoDB", "C++", "Python"]});
{ "acknowledged" : true, "insertedId" : 2 }
แสดงข้อมูล:
> db.demo503.find().pretty();
{ "_id" : 1, "Name" : "John", "Subject" : [ "MySQL", "Java", "C" ] }
{ "_id" : 2, "Name" : "David", "Subject" : [ "MongoDB", "C++", "Python" ] }
คิวรีดึงเฉพาะ 1 รายการสุดท้ายของอาร์เรย์ Subject
> db.demo503.find({_id: 2}, {'Subject': {$slice: -1}});
ผลลัพธ์:
{ "_id" : 2, "Name" : "David", "Subject" : [ "Python" ] }
รูปแบบการใช้ $slice
| ค่า | ความหมาย | ตัวอย่าง |
|---|---|---|
n (บวก) | ดึง n รายการแรก | {$slice: 2} → 2 รายการแรก |
-n (ลบ) | ดึง n รายการสุดท้าย | {$slice: -2} → 2 รายการสุดท้าย |
[skip, limit] | ข้าม skip รายการ แล้วดึง limit รายการ | {$slice: [1, 2]} → ข้าม 1 ดึง 2 |