我有一段代码每 30 秒将天气信息存储到 MongoDB 集合中。我想出了一种方法,将最近24小时的数据从服务器发布到客户端,如下所示:
服务器
Meteor.publish('mountCarmelData', function dataPublication(){
return MountCarmel.find({},
{
limit: 2880//max of 24 hours
});
});
客户端
Meteor.subscribe('mountCarmelData');
如果插入一条新记录并且集合中的记录总数小于限制,则这条新记录会自动发送到客户端。问题是当集合中保存的记录超过 2880 条时,新记录不再发送到客户端。
我想知道有没有办法总是把最新的2880条记录发送给客户端。或者也许是一种将新插入的记录发送到客户端的方法。
我需要过去 24 小时的数据来绘制图表,我需要新收集的数据(每 30 秒保存到集合中)来动态更新天气变量。
最佳答案
您需要在发布时对您的收藏进行排序。我假设你在每条记录上都有某种时间戳,你可以按它来排序。例如
{
limit: 2800,
sort: {createdAt: -1}
}
-1 将降序排列,从新到旧。
注意:这种排序是为了发布,以确保您发布的是您想要的数据给客户端。如果您的客户需要不同顺序的数据(即降序不是正确的选择),那么客户可以根据需要对发布的数据进行排序。
关于javascript - 如何使用MongoDB在Meteor中连续发布最新的N条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41772507/