Mongodb 如何按插入时间对流星收集进行排序?

Mongodb 如何按插入时间对流星收集进行排序?,mongodb,meteor,mongodb-query,Mongodb,Meteor,Mongodb Query,我正在使用Meteor进行我的第一个项目,在排序方面遇到了一些困难 我有一个表单,用户在其中输入格言,然后将其显示在列表中。目前,最新的格言会自动显示在列表的底部。有没有一种简单的方法可以让最新的内容显示在列表的顶部 我试过: Template.list.aphorisms = function () { return Aphorisms.find({}, {sort: {$natural:1}}); }; 我很困惑,因为Meteor文档没有太多的例子 假设date\u crea

我正在使用Meteor进行我的第一个项目,在排序方面遇到了一些困难

我有一个表单,用户在其中输入格言,然后将其显示在列表中。目前,最新的格言会自动显示在列表的底部。有没有一种简单的方法可以让最新的内容显示在列表的顶部

我试过:

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

我很困惑,因为Meteor文档没有太多的例子

假设
date\u created
是有效的日期格式以及时间戳,您应该使用
date.parse()
javascript函数插入
date\u created
的解析值,该函数给出1970年1月1日和
date\u created
中包含的日期值之间的毫秒数

因此,最近添加的记录所包含的
date\u created
值将大于之前插入的记录

现在,在获取记录时,将光标按创建日期的降序排列,如下所示:

 Aphorisms.find({}, {sort: {date_created: -1}});
这将对记录从新到旧进行排序


希望这有帮助。

我发现以下是一种更清洁的解决方案:

   Template.list.aphorisms = function () {
      return Aphorisms.find().fetch().reverse();
   };

鉴于整个集合已按您希望的相反顺序存在,你可以简单地创建一个包含所有对象的数组并颠倒顺序。

你可以添加一个
date\u created
属性并按此进行排序。你的收藏看起来怎么样?我添加了一个date\u created属性…我希望MongoDB不必这样做,虽然…默认的
\u id
字段已经由创建时间设置了关键帧(请参阅:如何生成Mongo对象)。你可以按相反的顺序排序,而不必添加另一个字段。恐怕Meteor使用自己的ObjectID,但没有时间戳部分。这很好。我目前唯一能够存储日期的方法是:var combinedTime=year+“”+day+“”+month+“”+hour+“”+minute+“”+second;是的,确保
date\u created
属性也包含有效的时间戳。由于这不适用于仅
日期+月份+年份
。为了在minimongo客户端对日期进行排序,日期必须存储为字符串,如ISO8601格式。Minimongo不知道如何按日期类型排序。看到它下面的红色文本自'12'以来发生了一些变化:
date\u created
现在是
createdAt
我不确定你是否可以依靠Mongo来保持物品的有序。理论上,这是可行的,但就我所知,这并不总是一个安全的假设。这是最安全的解决方案。默认情况下,MongoDB会在Meteor中自动创建createdAt字段。因此,在进行大型查询时,这实际上是最安全、最干净的解决方案。您好,
createdAt
字段不是自动创建的(可能是在您发表评论时,我使用的是1.4.2)。您必须自己处理,这通常要归功于
aldeed:collection2
package。我不知道为什么这不是默认行为,就像猫鼬或其他语言一样。你不能依赖这样一个事实,即find将按创建顺序获取文档