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

การหาตำแหน่งของเอกสารในคอลเลกชัน MongoDB ด้วย sort() และ count()

คำนวณตำแหน่งสัมพัทธ์ของเอกสารในคอลเลกชัน

เพื่อหาว่าเอกสารอยู่ที่ตำแหน่งไหนเมื่อเรียงลำดับตามฟิลด์ใดฟิลด์หนึ่ง สามารถใช้ find() ร่วมกับ sort() และ count() ได้

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

> db.demo47.insertOne({ "ClientName": "Adam" });
> db.demo47.insertOne({ "ClientName": "John" });
> db.demo47.insertOne({ "ClientName": "Chris" });
> db.demo47.insertOne({ "ClientName": "Sam" });

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

> db.demo47.find();

ผลลัพธ์ (เรียงตาม _id ใส่เข้าไป):

{ "_id": ObjectId("..."), "ClientName": "Adam" }
{ "_id": ObjectId("..."), "ClientName": "John" }
{ "_id": ObjectId("..."), "ClientName": "Chris" }
{ "_id": ObjectId("..."), "ClientName": "Sam" }

คำสั่งหาตำแหน่งของ "John" เมื่อเรียงตาม ClientName

> db.demo47.find({ ClientName: { $lt: "John" } }).sort({ ClientName: 1 }).count();

ผลลัพธ์: 2

คำอธิบาย

  1. { ClientName: { $lt: "John" } }: หาเอกสารที่ ClientName น้อยกว่า "John" (เรียงลำดับอักษร)
  2. .sort({ ClientName: 1 }): เรียงลำดับตาม ClientName น้อยไปมาก
  3. .count(): นับจำนวนเอกสารที่ตรงเงื่อนไข

ผลลัพธ์ 2 หมายถึง มีเอกสาร 2 รายการที่อยู่ "ก่อน" John เมื่อเรียงตาม ClientName (คือ Adam และ Chris)

ข้อควรระวัง

  • วิธีนี้ให้ตำแหน่งสัมพัทธ์ (0-based index) ในชุดข้อมูลที่เรียงแล้ว
  • ต้องใช้ sort() ให้ตรงกับเงื่อนไข $lt/$gt เพื่อให้ผลลัพธ์สอดคล้อง
  • ใน MongoDB ใหม่ ควรใช้ countDocuments() แทน count() ที่ deprecated แล้ว