Map-Reduce组合数据(MongoDb)

时间:2015-02-25 08:53:44

标签: sql mongodb mapreduce

我有两个系列。

  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有90万条记录在生产中。我需要经常更新LogData,这就是它在单独集合中的原因。

  1. 请不要建议将数据保存在一个集合中。
  2. 这是同一个查询,我问了不同的方法Creating file in GridFs (MongoDb)
  3. 请不要建议联接不能在mongoDB中应用。

1 个答案:

答案 0 :(得分:0)

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

另一种选择是通过在OptData中的相应文档中镜像LogData所需的字段来对L​​ogData中的数据进行非规范化。所以你的OptData文档看起来像这样:

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