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

ตัดอาร์เรย์ในฟิลด์ที่ populate ด้วย $slice ใน MongoDB

เมื่อต้องการดึงเฉพาะบางส่วนของอาร์เรย์ (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

เหมาะสำหรับ pagination, แสดงเฉพาะรายการล่าสุด, หรือจำกัดจำนวนข้อมูลที่ส่งกลับไปยัง client

ค่าความหมายตัวอย่าง
n (บวก)ดึง n รายการแรก{$slice: 2} → 2 รายการแรก
-n (ลบ)ดึง n รายการสุดท้าย{$slice: -2} → 2 รายการสุดท้าย
[skip, limit]ข้าม skip รายการ แล้วดึง limit รายการ{$slice: [1, 2]} → ข้าม 1 ดึง 2