MongoDB query to select 10 most recent documents without changing order?

To select the 10 most recent documents in MongoDB without changing their order, use the skip() method with count() - 10. This skips the oldest documents and returns the last 10 in their original insertion order.

Syntax

db.collection.find().skip(db.collection.count() - 10);

Create Sample Data

db.demo500.insertMany([
    {value: 10},
    {value: 1200},
    {value: 19},
    {value: 28},
    {value: 50},
    {value: 70},
    {value: 100},
    {value: 10},
    {value: 98},
    {value: 80},
    {value: 75},
    {value: 68}
]);
{
    "acknowledged": true,
    "insertedIds": [
        ObjectId("5e8749c5987b6e0e9d18f55a"),
        ObjectId("5e8749c8987b6e0e9d18f55b"),
        ObjectId("5e8749cb987b6e0e9d18f55c"),
        ObjectId("5e8749cf987b6e0e9d18f55d"),
        ObjectId("5e8749d1987b6e0e9d18f55e"),
        ObjectId("5e8749d4987b6e0e9d18f55f"),
        ObjectId("5e8749d7987b6e0e9d18f560"),
        ObjectId("5e8749d9987b6e0e9d18f561"),
        ObjectId("5e8749dc987b6e0e9d18f562"),
        ObjectId("5e8749e0987b6e0e9d18f563"),
        ObjectId("5e874c73987b6e0e9d18f564"),
        ObjectId("5e874c78987b6e0e9d18f565")
    ]
}

Display All Documents

db.demo500.find();
{ "_id" : ObjectId("5e8749c5987b6e0e9d18f55a"), "value" : 10 }
{ "_id" : ObjectId("5e8749c8987b6e0e9d18f55b"), "value" : 1200 }
{ "_id" : ObjectId("5e8749cb987b6e0e9d18f55c"), "value" : 19 }
{ "_id" : ObjectId("5e8749cf987b6e0e9d18f55d"), "value" : 28 }
{ "_id" : ObjectId("5e8749d1987b6e0e9d18f55e"), "value" : 50 }
{ "_id" : ObjectId("5e8749d4987b6e0e9d18f55f"), "value" : 70 }
{ "_id" : ObjectId("5e8749d7987b6e0e9d18f560"), "value" : 100 }
{ "_id" : ObjectId("5e8749d9987b6e0e9d18f561"), "value" : 10 }
{ "_id" : ObjectId("5e8749dc987b6e0e9d18f562"), "value" : 98 }
{ "_id" : ObjectId("5e8749e0987b6e0e9d18f563"), "value" : 80 }
{ "_id" : ObjectId("5e874c73987b6e0e9d18f564"), "value" : 75 }
{ "_id" : ObjectId("5e874c78987b6e0e9d18f565"), "value" : 68 }

Get 10 Most Recent Documents

db.demo500.find().skip(db.demo500.count() - 10);
{ "_id" : ObjectId("5e8749cb987b6e0e9d18f55c"), "value" : 19 }
{ "_id" : ObjectId("5e8749cf987b6e0e9d18f55d"), "value" : 28 }
{ "_id" : ObjectId("5e8749d1987b6e0e9d18f55e"), "value" : 50 }
{ "_id" : ObjectId("5e8749d4987b6e0e9d18f55f"), "value" : 70 }
{ "_id" : ObjectId("5e8749d7987b6e0e9d18f560"), "value" : 100 }
{ "_id" : ObjectId("5e8749d9987b6e0e9d18f561"), "value" : 10 }
{ "_id" : ObjectId("5e8749dc987b6e0e9d18f562"), "value" : 98 }
{ "_id" : ObjectId("5e8749e0987b6e0e9d18f563"), "value" : 80 }
{ "_id" : ObjectId("5e874c73987b6e0e9d18f564"), "value" : 75 }
{ "_id" : ObjectId("5e874c78987b6e0e9d18f565"), "value" : 68 }

How It Works

The query calculates the total document count (12) and skips the first 2 documents (12 - 10 = 2), returning the remaining 10 documents in their original insertion order. This preserves the natural sequence while getting only the most recently inserted documents.

Conclusion

Use skip(count() - N) to retrieve the N most recent documents while maintaining their original insertion order. This approach is ideal when you need the latest documents without reordering them.

Updated on: 2026-03-15T03:19:04+05:30

212 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements