如何使用MongoDB连续发布Meteor中的最新N条记录?

时间:2017-01-20 21:19:10

标签: javascript mongodb meteor

我有一段代码,每30秒将一次天气信息存储到MongoDB集合中。我想出了一种方法来将最近24小时的数据从服务器发布到客户端,如下所示:

服务器

Meteor.publish('mountCarmelData', function dataPublication(){
    return MountCarmel.find({}, 
    {
        limit: 2880//max of 24 hours
    });
});

客户端

Meteor.subscribe('mountCarmelData');

如果插入新记录且集合中的记录总量小于限制,则此新记录将自动发送到客户端。问题是,当集合中保存的记录超过2880条时,新记录将不再发送给客户端。

我想知道是否有办法将最近的2880条记录发送给客户。或者也许是将新插入的记录发送到客户端的方法。

我需要最后24小时的数据在图表中绘图,我需要新收集的数据(每隔30秒保存到集合中)以动态更新天气变量。

1 个答案:

答案 0 :(得分:1)

您需要在发布时对收藏品进行排序。我假设你在每条记录上都有某种时间戳,你可以按照那种方式排序。 e.g。

{
    limit: 2800,
    sort: {createdAt: -1}
}

-1将按降序排序,从最新到最旧。

注意:此类型适用于发布,以确保您将所需数据发布到客户端。如果您的客户端需要不同顺序的数据(即降序不是正确的选择),那么客户端可以根据需要对发布的数据进行排序。