15

How can I get last 50 documents in mongoDB?

I have a collection which is made by

db.createCollection("collection",{capped:true, size:300000});

from this "collection"

I would like to have last 50 documents instead of get first 50 documents.

I know that I can get first 50 documents by using

db.collection.find().limit(50);

But how can I get last 50 documents?

Is this can be done simply with MongoDB API or should I implement this with programming?

DhruvPathak
  • 42,059
  • 16
  • 116
  • 175
jwchang
  • 10,584
  • 15
  • 58
  • 89
  • There is another related question on stackoverflow: https://stackoverflow.com/questions/4421207/mongodb-how-to-get-the-last-n-records Hope this will help you. – rizzz86 Oct 11 '11 at 04:57

3 Answers3

23

this should do the thing:

db.collection.find().sort({$natural: -1}).limit(50);
Kyryl
  • 331
  • 2
  • 2
1

The last N added records, from less recent to most recent, can be seen with this query:

db.collection.find().skip(db.collection.count() - N)

In your case 50

db.collection.find().skip(db.collection.count() - 50)
Suraj Rao
  • 29,388
  • 11
  • 94
  • 103
0

you need the last 50 documents from mongo collection, so this is the query

db.collection('collectionName').find().sort({$natural: -1}).limit(50);

// sort({$natural: -1}) for the last fields (desecnding)
// limit(50) because you need only 50 fields 
Suraj Rao
  • 29,388
  • 11
  • 94
  • 103
shael
  • 41
  • 4