Node+MongoDB基于平均的高效查询



我有一个复杂(或不是很复杂)的问题,需要一个建议。我需要存储~20K个文档,每个文档有~400个子文档。必须获取文档,其中子文档具有大于或小于平均x百分比的属性之一。如何以适当(有效)的方式做这件事?我不需要完整的剪报来复制——只要,请给我指路,剩下的我会自己处理。

编辑:主文档是公司,子文档是他们的股票市场数据。每个子文档代表公司一天的历史股票市场评级。它看起来像这样:
{  
name,  
stockSymbol,  
tickets: [{  
date,  
low,  
high,  
close,  
open  
}, {  
...  
}  
...]  
}

请求参数为:startDate, endDate, times, percent。

我需要做的是获取公司在门票"startDate"one_answers";endDate"low"或";引起;参数从"close"平均百分比在那个时期的百分比次。

我尝试了许多解决方案,包括将子文档提取到另一个集合,但数据数量太大(20k个公司和365个子文档,每个都有一年的历史)。

MongoDB支持查询嵌入式文档(https://docs.mongodb.com/manual/tutorial/query-array-of-documents/)。它在我的用例(~200个子文档)中做得更好。

但是我建议关注一下~400。如果子文档继续增长,那么最终会导致其他性能问题。

更多的子文档将使您的文档更重,并且将对执行find操作具有挑战性。较重的文档将占用更多的CPU和磁盘利用率。这也可能导致unbounded array问题。

最新更新