How to fetch last n records from a collection in mongodb
This tutorial guides you how to fetch last n records from a collection in MongoDB.
Fetch last n records from collection in mongodb
First, use the following dump names.csv to create sample data in mongodb with collection name “names” for our exercise or you can insert documents in to collection using db.collection.insertOne() method.
> db.names.insertOne({name:"Krish", gender:"M", count:"2"}); Response: ------------ { "acknowledged" : true, "insertedId" : ObjectId("5e6bcf596fd07954afc2d18d") }
You can use csv file downloaded from above link and import csv data in to mongodb. To do this follow tutorial on How to import CSV using mongoimport command in MongoDB.
Once CSV file is imported successfully, you can use the following command to display all documents from collection.
> db.names.find().pretty(); Response: ------------------- { "_id" : ObjectId("5e4a6df5ab415e1ab85ad526"), "name" : "Emma", "gender" : "F", "count" : "18688" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad527"), "name" : "Olivia", "gender" : "F", "count" : "17921" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad528"), "name" : "Ava", "gender" : "F", "count" : "14924" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad529"), "name" : "Isabella", "gender" : "F", "count" : "14464" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad52a"), "name" : "Sophia", "gender" : "F", "count" : "13928" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad52b"), "name" : "Charlotte", "gender" : "F", "count" : "12940" } -------------- --------------
Then, you can use the following command to fetch the last n records from a collection in mongodb. To specify “n” value you need to use limit() method as shown below.
Note, let say if you wanted to fetch the last 5 records, then you can use sort() in conjunction with limit(). And for ascending or descending sort, you can also specify sort parameter { $natural : 1 } to force the query to perform a forwards collection scan, or { $natural : -1 } for a reverse collection scan.
> db.names.find().sort({$natural:-1}).limit(5); Response: --------------- { "_id" : ObjectId("5e6b249f57f109872fc2d1ae"), "name" : "krish", "gender" : "M" , "count" : "2" } { "_id" : ObjectId("5e4a6df9ab415e1ab85b5247"), "name" : "Zzyzx", "gender" : "M" , "count" : "5" } { "_id" : ObjectId("5e4a6df9ab415e1ab85b5246"), "name" : "Zyron", "gender" : "M" , "count" : "5" } { "_id" : ObjectId("5e4a6df9ab415e1ab85b5245"), "name" : "Zyrie", "gender" : "M" , "count" : "5" } { "_id" : ObjectId("5e4a6df9ab415e1ab85b5244"), "name" : "Zyran", "gender" : "M" , "count" : "5" }
Let’s say you wanted to fetch first 5 records from a collection in mongodb, then you can use the following command.
> db.names.find().sort({$natural:1}).limit(5); Response: ---------------- { "_id" : ObjectId("5e4a6df5ab415e1ab85ad526"), "name" : "Emma", "gender" : "F", "count" : "18688" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad527"), "name" : "Olivia", "gender" : "F ", "count" : "17921" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad528"), "name" : "Ava", "gender" : "F", "count" : "14924" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad529"), "name" : "Isabella", "gender" : "F", "count" : "14464" } { "_id" : ObjectId("5e4a6df5ab415e1ab85ad52a"), "name" : "Sophia", "gender" : "F ", "count" : "13928" }
Also See
- Guide to add new field in an existing Mongo DB collection document
- Use mongoimport command to import CSV in mongoDB
- Instantiate Spring Beans using an Instance Factory Method – Example
- How to drop a mongodb database from mongo shell and command line?