我正在使用Meteor进行数据可视化,为视图运行React和D3。今天决定使用更多文档填充MongoDB服务器(总共30个文档,每个文件净约50,000行)。在使用'仅'4个文档运行数据库之前没有问题,但现在我看到了
Exception while polling query {"collectionName":"Metrics","selector":{},"options":{"transform":null}}: MongoError: Query exceeded the maximum allowed memory usage of 40 MB. Please consider adding more filters to reduce the query response size.
这是我的collections.js文件,因为自动发布是关闭。
if (Meteor.isServer) {
const remoteCollectionString = "notForHumanConsumption";
database = new MongoInternals.RemoteCollectionDriver(remoteCollectionString);
Meteor.publish('metricsDB', function() {
return Metrics.find({})
});
}
Metrics = new Mongo.Collection("Metrics", { _driver: database });
if (Meteor.isClient) {
Meteor.startup(function() {
Session.set('data_loaded', false);
console.log(Session.get('data_loaded'))
});
Meteor.subscribe('metricsDB', function(){
// Set the reactive session as true to indicate that the data have been loaded
Session.set('data_loaded', true);
console.log(Session.get('data_loaded'))
});
}
在发布函数中添加任何类型的sort
似乎至少让控制台记录true
,但它很快就会这样做。终端显示没有错误,但我卡住了,没有得到任何数据到应用程序。
更新:决定从集合中删除10个条目,将其限制为20,现在集合 ~28MB 大,而不是 ~42MB < / strong> 30项。应用程序正在加载,虽然速度很慢。
数据结构看起来非常像这样:
{
_id: BLAKSBFLUyiy79a6fs9Pjhadkh&SA86886Daksh,
DateQueried: dateString,
DataSet1: [
{
ID,
Name,
Properties: [
{
ID,
Name,
Nr,
Status: [0, 1, 2, 3],
LocationData: {
City,
CountryCode,
PostalCode,
Street,
StreetNumber
}
}
]
}
],
DataSet2: [
{
ID,
Name,
Nr,
Obj: {
NrR,
NrGS,
LengthOfR
}
}
]
}
在每个文档中,DataSet1通常为9个项目。其中的属性最多可包含~1900(平均约500个)项目。 DataSet2通常约有49个项目。