我正在处理一个包含大约300万个文档的MongoDB集合。这些文档是从SQL表转换而来的。结构非常简单:
{
RowId: 1234,
UserId: 23,
User: {
UserName: "John"
}
}
在SQL中,查询非常简单:
通过UserId从SomeTable组中选择max(RowId),UserId
在生产服务器中,此表有300万行。这个非常繁忙的服务器在不到1秒的时间内返回628行。但是在MongoDB中,我似乎无法找到返回类似响应的方法。
这是我尝试过的:
db.Events.aggregate([{
$group: {
_id: "$UserId",
lastRow: {
$max: "$RowId"
}
}
}])
我在RowId和UserId字段中都创建了索引。但基本上发生的事情是Mongo进程开始使用越来越多的RAM,在某些时候,我正在使用的GUI(Robo 3T)没有做任何事情。我必须杀死Mongo进程。