我有一个 nodejs 服务器接收 websockets 中的数据块并将它们保存到 mongoDb。
我应该每天得到大约 1 到 4 百万个块,每个块大约 350 字节(在数据库中测量)。
大块
{
code: String,
type: String,
time: Date,
pos: {
x:Number, y:Number
}
}
我想完成的事
我想每晚将数据处理成下面的结构,稍后在仪表板中呈现。
数据加入数据数组前需要过滤
{
createdAt: Date,
type: String,
code: String,
data:[ {x,y,time}, {x,y,time}, ... ]
}
问题是在尝试处理数据时,我的堆内存不足。
我怎样才能做到这一点?
使用 mongo aggregate 做所有的过程应该有所作为吗?
也许我可以在向服务器查询数据之前知道数据有多大,如果数据太大,我可能会将过程分成两部分并创建单独的块。
这不是我最喜欢的选项,因为数据是根据其余数据过滤的(我正在检查是否没有重复位置和相邻位置)。
感谢任何想法或意见。
谢谢