Description
When I perform a sort using a project fields value like this:
[{
|
'$project': { |
'metaData': { |
'$let': { |
'vars': { |
'array': [] |
},
|
'in': { |
'sizeArray': { |
'$size': '$$array' |
}
|
}
|
}
|
}
|
}
|
}, {
|
"$sort": { |
"metaData.sizeArray": 1 |
}
|
}].
|
Here I perform a sort using the size of the array. In this example the size of the array is zero, but it can vary if the array is made out of value of a field in the collection.
Everything works fine until now. But if I perform $skip then $limit after this many documents are repeated when the value of $skip changes. For example:
db.getCollection('venues').aggregate([{ |
'$project': { |
'metaData': { |
'$let': { |
'vars': { |
'array': [] |
},
|
'in': { |
'sizeArray': { |
'$size': '$$array' |
}
|
}
|
}
|
}
|
}
|
}, {
|
"$sort": { |
"metaData.sizeArray": 1 |
}
|
}, {
|
"$skip": 4 |
}, {
|
"$limit": 4 |
}]);
|
When the value of skip goes from 4..8..12, many documents are repeated.