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

ดึงข้อมูลล่าสุดจาก MongoDB ตามวันที่ด้วย sort และ limit

เพื่อดึงข้อมูลล่าสุด (latest) ตามฟิลด์วันที่ ให้ใช้ sort() กับค่า -1 (descending) และ limit() จำกัดจำนวน

> db.demo521.insertOne({"PurchaseDate": new ISODate("2019-01-10"), "ProductName": "Product-1"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e89a1acb3fbf26334ef6117") }
> db.demo521.insertOne({"PurchaseDate": new ISODate("2020-04-05"), "ProductName": "Product-10"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e89a1b9b3fbf26334ef6118") }
> db.demo521.insertOne({"PurchaseDate": new ISODate("2010-05-08"), "ProductName": "Product-4"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e89a1c8b3fbf26334ef6119") }
> db.demo521.insertOne({"PurchaseDate": new ISODate("2020-02-21"), "ProductName": "Product-3"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e89a1d7b3fbf26334ef611a") }

แสดงข้อมูล:

> db.demo521.find();
{ "_id" : ObjectId("5e89a1acb3fbf26334ef6117"), "PurchaseDate" : ISODate("2019-01-10T00:00:00Z"), "ProductName" : "Product-1" }
{ "_id" : ObjectId("5e89a1b9b3fbf26334ef6118"), "PurchaseDate" : ISODate("2020-04-05T00:00:00Z"), "ProductName" : "Product-10" }
{ "_id" : ObjectId("5e89a1c8b3fbf26334ef6119"), "PurchaseDate" : ISODate("2010-05-08T00:00:00Z"), "ProductName" : "Product-4" }
{ "_id" : ObjectId("5e89a1d7b3fbf26334ef611a"), "PurchaseDate" : ISODate("2020-02-21T00:00:00Z"), "ProductName" : "Product-3" }

คิวรีดึงข้อมูลล่าสุด 1 รายการ

> db.demo521.find().sort({"PurchaseDate": -1}).limit(1);

ผลลัพธ์ - ได้ข้อมูลวันที่ 2020-04-05 (ล่าสุด):


การใช้งานเพิ่มเติม

  • limit(n): ดึง n รายการล่าสุด (เช่น limit(5) สำหรับ 5 รายการล่าสุด)
  • sort({date: 1}): เรียงจากเก่าสุดไปใหม่สุด (ascending)
  • ร่วมกับ $match: กรองช่วงวันที่ก่อนค่อย sort

หมายเหตุ: ควรสร้างดัชนี (index) บนฟิลด์วันที่ เพื่อประสิทธิภาพการ sort ที่ดีขึ้น