我有两个集合。
LogData
[{
"SId": 10,
"NoOfDaya" : 9,
"Status" : 4
}
{
"SId": 11,
"NoOfDaya" : 8,
"Status" : 2
}]
OptData
[ {
"SId": 10,
"CId": 12,
"CreatedDate": ISO(24-10-2014)
}
{
"SId": 10,
"CId": 13,
"CreatedDate": ISO(24-10-2014)
}]
现在使用mongoDB,我需要找到格式的数据
select a.SPID,a.CreatedDate,CID=(MAX(a.CID)) from OptData a
Join LogData c on a.SID=c.SID where Status>2
group by a.SPID,a.CreatedDate
LogData有600条记录,而OPTData在生产中有9000万条记录。我需要经常更新LogData,这就是为什么它在单独的集合中。
- 请不要建议将数据保存在一个集合中
- 这是相同的查询,我用不同的方法询问在GridFs中创建文件(MongoDb)
- 请不要建议在mongoDB中不能应用Joins
由于MongoDB不支持JOIN,您将不得不执行两个单独的查询,并在应用层上执行JOIN。只有600个文档,集合LogData非常小,因此将其完全加载到应用程序内存中并使用它来丰富OptData返回的结果应该没有问题。
另一种选择是通过镜像OptData中相应文档中LogData中所需的字段来取消LogData中数据的规范化。所以你的OptData文档看起来像这样:
{
"SId": 10,
"CId": 12,
"CreatedDate": ISO(24-10-2014),
"LogStatus": 2
}