我有一段代码,每30秒将一次天气信息存储到MongoDB集合中。我想出了一种方法来将最近24小时的数据从服务器发布到客户端,如下所示:
服务器
Meteor.publish('mountCarmelData', function dataPublication(){
return MountCarmel.find({},
{
limit: 2880//max of 24 hours
});
});
客户端
Meteor.subscribe('mountCarmelData');
如果插入新记录且集合中的记录总量小于限制,则此新记录将自动发送到客户端。问题是,当集合中保存的记录超过2880条时,新记录将不再发送给客户端。
我想知道是否有办法将最近的2880条记录发送给客户。或者也许是将新插入的记录发送到客户端的方法。
我需要最后24小时的数据在图表中绘图,我需要新收集的数据(每隔30秒保存到集合中)以动态更新天气变量。
答案 0 :(得分:1)
您需要在发布时对收藏品进行排序。我假设你在每条记录上都有某种时间戳,你可以按照那种方式排序。 e.g。
{
limit: 2800,
sort: {createdAt: -1}
}
-1将按降序排序,从最新到最旧。
注意:此类型适用于发布,以确保您将所需数据发布到客户端。如果您的客户端需要不同顺序的数据(即降序不是正确的选择),那么客户端可以根据需要对发布的数据进行排序。