【发布时间】:2014-05-12 23:03:34
【问题描述】:
我不知道使用meteorjs 处理庞大的mongo 数据库的最佳方法。
在我的示例中,我有一个数据库集合,其中包含地址和地理位置。 (整个代码sn-ps只是例子)
例子:
{
address : 'Some Street',
geoData : [lat, long]
}
现在我有一个表单,用户可以在其中输入地址以获取地理数据。很简单。但问题是,包含地理数据的集合中包含数百万个文档。
在 Meteor 中,您必须在服务器端发布集合并在客户端和服务器端订阅。所以我的代码是这样的:
// Client / Server
Geodata = new Meteor.collection('geodata');
// Server side
Meteor.publish('geodata', function(){
return Geodata.find();
});
// Client / Server
Meteor.subscribe('geodata');
现在有人填写了表格 - 之后我得到了数据。在此之后,我搜索要返回的正确文档。我的方法是这样的:
// Server / Client
Meteor.methods({
getGeoData : function (address) {
return Geodata.find({address : address});
}
});
结果是正确的。这仍然有效。但我现在的问题是:
在我的示例中使用庞大的数据库处理此示例的最佳方法是什么?问题是当我订阅 Meteor 时,它会将整个集合保存在用户缓存中。有没有办法只订阅我需要的结果,当用户重用表单时,我可以覆盖订阅?还是有另一种好方法来保存大型数据库的性能以及我在示例中使用它的方式?
有什么想法吗?
【问题讨论】:
标签: javascript mongodb collections meteor