Skip to content

Instantly share code, notes, and snippets.

@ForbesLindesay
Created April 8, 2013 11:58
Show Gist options
  • Select an option

  • Save ForbesLindesay/5336296 to your computer and use it in GitHub Desktop.

Select an option

Save ForbesLindesay/5336296 to your computer and use it in GitHub Desktop.
function getPage(page, numberPerPage) {
numberPerPage = numberPerPage || 20;
return db.messages.aggregate(
{ '$sort': { date: 1 } },
{
'$group': {
_id: "$subjectID",
subject: { '$first': '$subject'},
messages: {'$sum': 1},
first: { '$first': '$from' },
last: { '$last': '$from' },
start: { '$first': '$date' },
end: { '$last': '$date' }
}
},
{ '$sort': {start: -1} },
{ '$skip': page * numberPerPage },
{ '$limit' : numberPerPage });
}
function totalNumberOfTopics() {
return db.messages.aggregate({'$sort': { date: 1 }}, {
'$group': {
_id: "$subjectID",
subject: { '$first': '$subject'},
messages: {'$sum': 1},
first: { '$first': '$from' },
last: { '$last': '$from' },
start: { '$first': '$date' },
end: { '$last': '$date' }
}}, {'$group': {_id: '1', 'count': {'$sum': 1}}});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment