如何使用mapreduce mongoDB执行集合连接

时间:2015-09-07 15:56:07

标签: mongodb mapreduce

嘿伙计们,我正在研究我的DBMS mongoDB迷你项目。 我有两个名为“消费者”和“票据”的集合。
Consumer集合包含消费者编号,带有区号的消费者信息。 Bills还包括消费者编号,比尔月(比尔月=“YYMM”),账单金额。
现在我想要一个特定区域代码的每月总账单金额。
请帮忙......
我的收藏架构是
消费者
+ - > “Consumer_Number”int
+ - > “Consumer_Name”字符串
+ - > “Area_Code”int

票据
+ - > “Bill_Number”int
+ - > “Consumer_Number”int
+ - > “Bill_Month”int
+ - > “Bill_Amount”int

我想要输出为
{
   Consumer_Number:“1234”,
   Area_Code:“02”,
   Bill_Amount_01:“234”,
   Bill_Amount_02:“404”,
   Bill_Amount_03:“534”,
   Bill_Amount_04:“200”,
   Bill_Amount_05:“150”,
   Bill_Amount_06:“190”,
   Bill_Amount_07:“150”,
   Bill_Amount_08:“300”,
   Bill_Amount_09:“450”,
   Bill_Amount_10:“540”,
   Bill_Amount_11:“230”,
   Bill_Amount_12:“600”,
}

1 个答案:

答案 0 :(得分:0)

在MongoDB中,您无法通过map-reduce或使用查询在两个集合中执行连接。但在您的情况下,您可以通过使用嵌入式文档方法重新设计您的集合。嵌入式文档方法在空间方面成本很低,但查询性能会很好。

在您的示例中,您可以将消费者集合条目作为 Bills 集合的嵌入文档。示例文档看起来像这样,

{
  "Bill_Number": "Bill 1",
  "Bill_Month" : "June",
  "Bill_Amount" : "1000",
  "Consumer" : { 
                 "Consumer_Number": "Consumer 1",
                 "Consumer_Name ": " John ",
                 "Area_Code":"Area Code 1"
                }
}

现在你甚至不必编写map-reduce代码,你可以使用mongo查询本身进行检索。