$slice

Controls the number of elements returned from an array field, allowing you to limit array results or skip elements.

Syntax

{ <field>: { $slice: <number> } } or { <field>: { $slice: [<skip>, <limit>] } }

Parameters

fieldstringrequired

Array field name to slice elements from

numbernumber

Number of elements to return (negative for last N elements)

skipnumber

Number of elements to skip from beginning

limitnumber

Maximum number of elements to return after skip

Examples

Limit array results

Return only first 3 elements from comments array

Query:

db.posts.find({}, { title: 1, comments: { $slice: 3 } })

Output:

Posts with title and only first 3 comments from comments array

Get last elements

Return last 2 elements from array using negative slice

Query:

db.products.find({}, { name: 1, reviews: { $slice: -2 } })

Output:

Products with name and last 2 reviews from reviews array

Skip and limit array elements

Skip first 5 elements and return next 10 from array

Query:

db.events.find({}, { eventName: 1, participants: { $slice: [5, 10] } })

Output:

Events with eventName and participants 6-15 (skip 5, take 10)

Related