如何在 MongoDB 中獲取最後 N 條記錄?
要在 MongoDB 中獲取最後 N 條記錄,你需要使用 limit() 函式。語法如下:
db.yourCollectionName.find().sort({$natural:-1}).limit(yourValue);
為了理解上述語法,讓我們建立一個帶有文件的集合。建立帶有文件的集合的查詢如下:
> db.getLastNRecordsDemo.insertOne({"EmployeeName":"Maxwell"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf3d6fd07954a4890689") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Carol"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf496fd07954a489068a") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Bob"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf4e6fd07954a489068b") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Sam"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf546fd07954a489068c") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Robert"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf596fd07954a489068d") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Mike"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf606fd07954a489068e") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Chris"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf686fd07954a489068f") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"James"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf6f6fd07954a4890690") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Jace"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf756fd07954a4890691") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"Ramit"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf7d6fd07954a4890692") } > db.getLastNRecordsDemo.insertOne({"EmployeeName":"David"}); { "acknowledged" : true, "insertedId" : ObjectId("5c6ecf8d6fd07954a4890693") }
透過 find() 函式顯示集合中的所有文件。查詢如下:
> db.getLastNRecordsDemo.find().pretty();
輸出如下:
{ "_id" : ObjectId("5c6ecf3d6fd07954a4890689"), "EmployeeName" : "Maxwell" } { "_id" : ObjectId("5c6ecf496fd07954a489068a"), "EmployeeName" : "Carol" } { "_id" : ObjectId("5c6ecf4e6fd07954a489068b"), "EmployeeName" : "Bob" } { "_id" : ObjectId("5c6ecf546fd07954a489068c"), "EmployeeName" : "Sam" } { "_id" : ObjectId("5c6ecf596fd07954a489068d"), "EmployeeName" : "Robert" } { "_id" : ObjectId("5c6ecf606fd07954a489068e"), "EmployeeName" : "Mike" } { "_id" : ObjectId("5c6ecf686fd07954a489068f"), "EmployeeName" : "Chris" } { "_id" : ObjectId("5c6ecf6f6fd07954a4890690"), "EmployeeName" : "James" } { "_id" : ObjectId("5c6ecf756fd07954a4890691"), "EmployeeName" : "Jace" } { "_id" : ObjectId("5c6ecf7d6fd07954a4890692"), "EmployeeName" : "Ramit" } { "_id" : ObjectId("5c6ecf8d6fd07954a4890693"), "EmployeeName" : "David" }
以下查詢可以透過 $natural 和 limit() 函式從集合中獲取最後 N 條記錄
> db.getLastNRecordsDemo.find().sort({$natural:-1}).limit(7);
輸出如下:
{ "_id" : ObjectId("5c6ecf8d6fd07954a4890693"), "EmployeeName" : "David" } { "_id" : ObjectId("5c6ecf7d6fd07954a4890692"), "EmployeeName" : "Ramit" } { "_id" : ObjectId("5c6ecf756fd07954a4890691"), "EmployeeName" : "Jace" } { "_id" : ObjectId("5c6ecf6f6fd07954a4890690"), "EmployeeName" : "James" } { "_id" : ObjectId("5c6ecf686fd07954a489068f"), "EmployeeName" : "Chris" } { "_id" : ObjectId("5c6ecf606fd07954a489068e"), "EmployeeName" : "Mike" } { "_id" : ObjectId("5c6ecf596fd07954a489068d"), "EmployeeName" : "Robert" }
廣告