When using mongodb aggregate, the limit only works for the whole data
pass to it, It doesn’t work on the group
data. Such as similar
function reduce
of RethinkDB.
Let’s say we group and push to an array like this:
aggregate([
{
$group: { _id: {"name": $name}, docs: {$push: '$$ROOT'} }
}
])
If we use limit
, it works on the whole group thing as a single
document. How do we limits only first 5 element in docs
.
The tricks to this is $slice
in a projection step:
aggregate([
{
$group: { _id: {"name": $name}, docs: {$push: '$$ROOT'} }
},
{
$group: { _id: {"name": $name}, docs: {$push: '$$ROOT'} }
}
])
”`