Map Reduce以组合数据(MongoDb)



我有两个集合。

  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,这就是为什么它在单独的集合中。

  1. 请不要建议将数据保存在一个集合中
  2. 这是相同的查询,我用不同的方法询问在GridFs中创建文件(MongoDb)
  3. 请不要建议在mongoDB中不能应用Joins

由于MongoDB不支持JOIN,您将不得不执行两个单独的查询,并在应用层上执行JOIN。只有600个文档,集合LogData非常小,因此将其完全加载到应用程序内存中并使用它来丰富OptData返回的结果应该没有问题。

另一种选择是通过镜像OptData中相应文档中LogData中所需的字段来取消LogData中数据的规范化。所以你的OptData文档看起来像这样:

{
   "SId": 10,
   "CId": 12,
   "CreatedDate": ISO(24-10-2014),
   "LogStatus": 2
}

相关内容

  • 没有找到相关文章

最新更新