How can I sort a Meteor collection by time of insertion?

squeezemylime picture squeezemylime · Dec 19, 2012 · Viewed 55.6k times · Source

I am working on my first project using Meteor, and am having some difficulty with sorting.

I have a form where users enter aphorisms that are then displayed in a list. Currently the most recent aphorisms automatically display at the bottom of the list. Is there an easy way to have the most recent appear at the top of the list instead?

I tried:

   Template.list.aphorisms = function () {
    return Aphorisms.find({}, {sort: {$natural:1}});
};

And am stumped because the Meteor docs don't have many examples.

Answer

sohel khalifa picture sohel khalifa · Dec 20, 2012

Assuming that the date_created is in a valid date format along with the timestamp, You should insert the parsed value of date_created using Date.parse() javascript function, which gives the number of milliseconds between January 1, 1970 and date value contained in date_created.

As a result of that, the most recently added record will contain greater value of date_created than the record inserted before it.

Now when fetching the records, sort the cursor in descending order of the date_created parameter as:

 Aphorisms.find({}, {sort: {date_created: -1}});

This will sort records from newer to older.

Hope this helps.