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

วิธีดึงองค์ประกอบเดียวจากอาร์เรย์ผลลัพธ์โดยใช้ดัชนีใน MongoDB

การดึงองค์ประกอบเดี่ยวจากอาร์เรย์ผลลัพธ์ด้วยดัชนี

เพื่อดึงองค์ประกอบเพียงตัวเดียวจากอาร์เรย์ผลลัพธ์ตามดัชนีที่ต้องการ สามารถใช้ Aggregation Pipeline ร่วมกับ $skip และ $limit ได้ โดย $skip ใช้สำหรับข้ามเอกสารตามจำนวนที่ระบุ

ตัวอย่างข้อมูลทดสอบ

> db.demo391.insertOne({ "_id": 101, "Name": "Chris", Values: ["101", "102"] });
> db.demo391.insertOne({ "_id": 111, "Name": "Chris", Values: ["101", "102"] });
> db.demo391.insertOne({ "_id": 121, "Name": "Chris", Values: ["101", "102"] });

แสดงข้อมูลทั้งหมด

> db.demo391.find();

ผลลัพธ์:

{ "_id": 101, "Name": "Chris", "Values": [ "101", "102" ] }
{ "_id": 111, "Name": "Chris", "Values": [ "101", "102" ] }
{ "_id": 121, "Name": "Chris", "Values": [ "101", "102" ] }

คำสั่งดึงเอกสารที่อยู่ตำแหน่งที่ 2 (ดัชนี 1)

> var i = 2;
> db.demo391.aggregate([
   { $match: { "Name": "Chris" } },
   { $skip: i - 1 },
   { $limit: 1 }
]);

ผลลัพธ์ที่ได้

{ "_id": 111, "Name": "Chris", "Values": [ "101", "102" ] }

คำอธิบาย

  • $match: กรองเอกสารที่ Name เป็น "Chris"
  • $skip: i - 1: ข้ามเอกสารแรก (i=2 หมายถึงข้าม 1 ตัว)
  • $limit: 1: จำกัดผลลัพธ์เพียง 1 เอกสาร

วิธีนี้เหมาะสำหรับการแบ่งหน้า (pagination) หรือการดึงรายการเฉพาะตำแหน่งจากผลลัพธ์ที่เรียงลำดับแล้ว